按顺序排列列表

2024-09-30 20:26:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个满是字符串的列表。我要取前10个值,将它们洗牌,然后替换列表中的前10个值,然后用值11-20,然后21-30,依此类推。你知道吗

例如:

input_list = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t']

还有一个函数叫做:

shuffle10(input_list)
>>> ['d','b','c','f','j','i','h','a','e','g','m','n','s','r','k','p','l','q','o','t']

我想如果我定义了一个空列表,并随机添加每10个值,那就行了:

newlist=[]
for i in range(int(len(input_list) / 10)):
    newlist.append(shuffle(input_list[(i*10):(i+1)*10]))
    print(newlist)

但所有这些回报是:

[None]
[None, None]

Tags: 函数字符串innone列表forinput定义
2条回答

random.sample代替shuffle

>>> input_list = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t']
>>> sum((random.sample(input_list[n:n+10], 10) for n in range(0,len(input_list),10)), [])
['f', 'i', 'd', 'a', 'g', 'j', 'e', 'c', 'b', 'h', 'p', 'l', 'r', 'q', 'm', 't', 's', 'n', 'o', 'k']

您正在创建一个临时列表,并对其进行洗牌,但没有捕获其结果。您可以拉出相关的子列表,洗牌,然后创建一个新列表:

new_list=[]
for i in range(1, len(input_list), 10):
    list_slice = input_list[i:i + 10]
    shuffle(list_slice)
    new_list.extend(list_slice)
print(new_list)

相关问题 更多 >