gpt4 book ai didi

python - 根据组编号将数组数组排序

转载 作者:太空宇宙 更新时间:2023-11-03 21:39:40 24 4
gpt4 key购买 nike

我有一个数组数组。我试图将它们分成 4 组,每组 3 个。这是代码...

random.shuffle(top_twelve_players_info)
top_twelve_players_info_copy = top_twelve_players_info[:]

group_1 = []
group_2 = []
group_3 = []
group_4 = []

for i in range(3):
group_1.append(top_twelve_players_info_copy[i])
top_twelve_players_info_copy.remove(top_twelve_players_info_copy[i])
print(f"Group 1: {group_1}")

for i in range(3):
group_2.append(top_twelve_players_info_copy[i])
top_twelve_players_info_copy.remove(top_twelve_players_info_copy[i])
print(f"Group 2: {group_2}")

for i in range(3):
group_3.append(top_twelve_players_info_copy[i])
top_twelve_players_info_copy.remove(top_twelve_players_info_copy[i])
print(f"Group 3: {group_3}")

# print(top_twelve_players_info_copy)

for i in range(3):
group_4.append(top_twelve_players_info_copy[i])
# top_twelve_players_info_copy.remove(top_twelve_players_info_copy[i])
print(f"Group 4: {group_4}")

目前,top_twelve_players_info 看起来像

[
['Krombopulos Michael', 10, 3],
['Scary Terry', 2, 11],
['Jerry Smith', 7, 6],
['Blim Blam ', 11, 2],
['Summer Smith', 1, 12],
['Tophat Jones', 5, 8],
['Beth Smith', 6, 7],
['Abradolf Lincler', 4, 9],
['Alan Rails', 12, 1],
['Morty Smith', 3, 10],
['Rick Sanchez', 9, 4],
['Xenon Bloom', 3, 10]
]

我正在寻找一种更有效的实现,而不是重复 for 循环,甚至以某种方式使 group_1group_2 变量取决于迭代次数。另外,由于某种原因,在当前的实现中,只有在创建第四组时,我才会收到错误“列表索引超出范围”。所以我不得不评论删除行。这是为什么?

最佳答案

您收到的错误是因为您在尝试按索引循环列表时正在改变列表(从中删除项目)(因此,当您的范围循环达到最后一个值时,索引 2 不再存在) for 循环)。

您可以通过使用范围循环对随机打乱的列表进行切片来简化该方法,其步长等于您想要输出的组的大小。以下方法将结果组放入单个列表中,然后打印与示例类似的输出。

import random

top_twelve_players_info = [['Krombopulos Michael', 10, 3], ['Scary Terry', 2, 11], ['Jerry Smith', 7, 6], ['Blim Blam ', 11, 2], ['Summer Smith', 1, 12], ['Tophat Jones', 5, 8], ['Beth Smith', 6, 7], ['Abradolf Lincler', 4, 9], ['Alan Rails', 12, 1], ['Morty Smith', 3, 10], ['Rick Sanchez', 9, 4], ['Xenon Bloom', 3, 10]]

random.shuffle(top_twelve_players_info)
groups = [top_twelve_players_info[i:i+3] for i in range(0, 12, 3)]

for i, group in enumerate(groups):
print(f'Group {i + 1}: {group}')

# EXAMPLE OUTPUT (differs based on random shuffle results)
# Group 1: [['Beth Smith', 6, 7], ['Scary Terry', 2, 11], ['Krombopulos Michael', 10, 3]]
# Group 2: [['Xenon Bloom', 3, 10], ['Rick Sanchez', 9, 4], ['Tophat Jones', 5, 8]]
# Group 3: [['Morty Smith', 3, 10], ['Abradolf Lincler', 4, 9], ['Jerry Smith', 7, 6]]
# Group 4: [['Summer Smith', 1, 12], ['Alan Rails', 12, 1], ['Blim Blam ', 11, 2]]

或者,如果您确实需要将每个组分配给自己的变量:

[group_1, group_2, group_3, group_4] = [top_twelve_players_info[i:i+3] for i in range(0, 12, 3)]

print(f'Group 1: {group_1}')
print(f'Group 2: {group_2}')
print(f'Group 3: {group_3}')
print(f'Group 4: {group_4}')

关于python - 根据组编号将数组数组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52972815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com