[英]Having trouble comparing lists and lists of list
我有一个整数列表和一个列表列表。 我需要比较两者。
列表列表有一个名称和一组整数。 我的列表只有一组整数。
我知道在 python 你可以说is list == list
。 但是,整数的顺序是导入的,在我的列表列表中,整数之前还有一个名称。
例如,我的列表将是4 1 6
而我需要与之比较的列表将是bob 6 7 2
。 我只需要比较整数,如果我将4 1 6
与1 6 4
或1 4 6
进行比较,则不会进行比较。
我试过使用循环,但没有得到我想要的结果。
chdnalist
将是一个列表,只有一组 3 个整数。 dnalist
是一个列表列表,一个列表是bob, 4, 1, 3
下一个是alice 9, 6, 4
。
我需要将chdnalist
中的三个整数与dna
列表中的三个整数进行比较,如果匹配,则打印名称,包括顺序。
这是我正在尝试的一组循环。 目前 s 循环不会增加。
def compare(dnalist, chdnalist):
for i in range(1, len(dnalist)):
for s in range(1, len(dnalist[1])):
print (s)
if (chdnalist[i - 1] != dnalist[i][s]):
break
if (s == len(dnalist[1])):
print (dnalist[i][0])
return
else:
print ("No Match")
return
这是 csv 文件的副本,它成为我的列表 (dnalist)。
name,AGATC,AATG,TATC
Alice,2,8,3
Bob,4,1,5
Charlie,3,2,5
我碰巧知道我用来创建列表的文本文件,当它被翻译时,我将它与它进行比较变成了4,1,5
(chdnalist)。 但是,当我 go 比较它们时,s 循环不会迭代。 它只运行一次。
迭代dnalist
时,使用扩展分配将名称与整数分开。 然后你可以使用==
来比较整数列表。
此外, No match
应该只在循环结束时打印,而不是在每次迭代期间打印,因为以后可能会有匹配。
由于您从 CSV 文件中读取dnalist
,因此所有内容都将被读取为字符串,而不是整数。 在比较之前,您需要将它们转换为整数。
def compare(dnalist, chdnalist):
for name, *dna in dnalist:
dna = list(map(int, dna))
if dna == chdnalist:
print(name)
return
print("No match")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.