在两个列表中查找公用值

问题描述 投票:-3回答:5
combined = []
for num1 in yolist:
    for num2 in dislist:
        if(list[num1]==list2[num2]):
            combined.apend(list[num1])

因此,我试图编写一个程序来检查两个列表之间的通用值,然后将这些值添加到新列表中,由于某种原因,这不起作用。它显示“ IndexError:列表索引超出范围”。

python list loops for-loop similarity
5个回答
1
投票

较短的变体是

combined = [y for y in yolist if y in dislist]

0
投票

您要遍历值本身,而不是索引。因此,您需要:

combined = []
for num1 in yolist:
    for num2 in dislist:
        if num1==num2:
            combined.append(num1)

0
投票

如何解决:

combined = []
for num1 in yolist:
    for num2 in dislist:
        if(num1==num2):
            combined.apend(list[num1])

for num1 in yolist将迭代list元素。要遍历list索引,应使用range函数,并遍历元素和索引,应使用enumerate函数。

示例:

元素:

for element in yolist:
    pass

索引:

for i in range(len(yolist)):
    pass

元素和索引:

for i, element in enumerate(yolist):
    pass

0
投票

我认为您应该只循环一个列表,然后检查另一个列表中该条目的存在。像这样:

组合= []对于l1中的num1:如果l1中的num1:Combined.append(num1)


0
投票

for num1 in yolist时,num1遍历列表。它不是实际的列表项,而不是列表项的索引。一种更有效的方法:

combined = []
for num1 in yolist:
    if num1 in dislist and num1 not in combined:
        combined.appened(num1)
© www.soinside.com 2019 - 2024. All rights reserved.