You are looping through everything in your list and only outputting the last value after the shuffle. What you need to do is shuffle it for every field, and return a single record from the list for each row.
Try the following - in the field calculator select Python Parser, click on Show Codeblock, and enter this in the Pre-logic Script Code box:
import random
def list_random(ran):
random.shuffle(ran)
return ran[0]
And in the expression, call the function and pass your list:
list_random(['kid', 'many', 'love', 'play'])
This will random shuffle the list for each row, and pass the first value in the shuffled list each time.
Alternatively, instead of shuffling your list, you could select a random list index position for each row:
Pre-logic:
import random
def list_random(ran):
return ran[random.randint(0,len(ran)-1)]
Expression:
list_random(['kid', 'many', 'love', 'play'])