gpt4 book ai didi

python - 检测列表列表中某些索引中的重复值

转载 作者:太空宇宙 更新时间:2023-11-04 08:50:56 25 4
gpt4 key购买 nike

我正在使用列表列表(类似于拼图)并尝试编写一个函数,如果在与另一个列表(可以看作列)相同的索引中至少有一个重复值,该函数将返回“False” ,视觉上)(否则为真)。例如:

List = [[ 1,  2,  3,  4,  5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]]

应该返回 'True' 因为没有重复但是:

List = [[ 1,  2,  3,  4,  5],
[ 6, 2, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]]

应该返回“False”,因为在 index[1] 的 list1 中有值“2”,在索引为 [1] 的 list2 中也有值“2”。

下面是我写函数的方式

def check_columns_valid(list):

for i in range(len(list)):
if i[0] == i[5] == i[10] == i[15] == i[20]:
return False
elif i[1] == i[6] == i[11] == i[16] == i[21]:
return False
elif i[2] == i[7] == i[12] == i[17] == i[22]:
return False
elif i[3] == i[8] == i[13] == i[18] == i[23]:
return False
elif i[4] == i[9] == i[14] == i[19] == i[24]:
return False
return True

我试图检查某些索引是否彼此相等,但如果所有索引都彼此相等并且我只需要至少一个,我的代码可能只会返回“False”。而且我也不确定这样做是否有效。我不知道我是否在跳过步骤。

最佳答案

您可以使用 zip 和 sets 来帮助解决这个问题。

def check_columns_valid(puzzle):
# Iterate over the puzzle one column at a time.
for column in zip(*puzzle):
# Get all of the unique values in the column.
uniques = set(column)
if len(uniques) != len(column):
# If the number of unique values isn't the same as the
# number of values, return False.
return False

return True

或者,如果您是单线的粉丝,所有这些都可以简化为:

def check_columns_valid(puzzle):
return all(len(x) == len(set(x)) for x in zip(*puzzle))

根据拼图的大小,如果您使用的是 Python 2.x,您可能需要考虑使用 izip(from itertools import izip) 而不是 zip

关于python - 检测列表列表中某些索引中的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35324785/

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