我试图计算两个列表中出现0的次数,并使用python保存该数字。我试图使用'list comprehension'命令把它放到第三个列表中,但我没有得到我想要的输出。
我的两个清单是:
list1 = [0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1]
list2 = [0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0]
因此,每当在每个列表的同一位置出现0时,我想将“0”附加到新列表中。我想对那些做同样的事情。
新列表应如下所示:
newlist = [0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1]
感谢您提前获得帮助,我一直试图弄清楚如何在几个小时内完成这项工作,但无济于事!
答案 0 :(得分:5)
您可以使用列表推导,如下所示:
answer = [x for x, y in zip(list1, list2) if x == y]
或者,您可以使用简单的列表操作来解决而不列表推导:
answer = []
for x, y in zip(list1, list2):
if x == y:
answer.append(x)
在这两种情况下,answer
都是:
[0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1]
答案 1 :(得分:1)
[x or y for x,y zip(list1, list2)]
答案 2 :(得分:0)
[0 if x == (0,0) else 1 for x in zip(list1,list2)]
答案 3 :(得分:0)
如果您希望列表由0
和1
按 0
或1
出现在两个列表中的相同位置的顺序排列,那么你可以使用以下列表理解:
result = [a for a, b in zip(list1, list2) if a==b]
然后测试您的值:
>>> newlist = [a for a, b in zip(list1, list2) if a==b]
>>> newlist
[0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1]
你看到结果不符合你的期望:
>>> newlist == [0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1]
False
所以你的问题是:你提供正确的结果是预期的结果吗?
答案 4 :(得分:0)
list1 = [0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1]
list2 = [0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0]
temp = [ list1[i] if list1[i] == list2[i] else 2 for i in range( 0, len(list1) )]
answer = [value for value in temp if value != 2]
print( answer )