Python 创建用于比较不相等列表的函数
背负 我想创建一个函数来比较两个列表:Python 创建用于比较不相等列表的函数,python,python-3.x,Python,Python 3.x,背负 我想创建一个函数来比较两个列表: def test(a,b): c=[] for item in b: if item in a: return c[item] 上面的函数给了我一个错误:如果我定义and和b,列表索引超出范围: a=[2,3,5,8] b=[4,5,6,9,8] 为什么会出现这种情况?您试图访问c中不存在的项。 尝试运行此命令并查看您的输出: a=[2,3,5,8] b=[4,5,6,9,8] c=['a', 'b
def test(a,b):
c=[]
for item in b:
if item in a:
return c[item]
上面的函数给了我一个错误:如果我定义and和b,列表索引超出范围:
a=[2,3,5,8]
b=[4,5,6,9,8]
为什么会出现这种情况?您试图访问c中不存在的项。 尝试运行此命令并查看您的输出:
a=[2,3,5,8]
b=[4,5,6,9,8]
c=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
for item in b:
if item in a:
print(c[item])
你可以从c得到第5项和第8项——“f”和“i”。
如果这些元素存在,这非常有效,但如果它们不存在,效果就不太好了。对于您的算法,您的列表将需要相同的长度。但是,您完全可以对其进行改进,以比较可变长度列表。您的代码存在一些问题:
c[项目]
将引用c
列表的“项目”索引。它不会按照您的意愿将“item”的值添加到列表中。例如:5是两个列表中的第一个公共值c[5]
引用c
数组中不存在的第6个元素;这就是你的错误return
来结束函数调用,并将c[5]
的值传递给函数的调用方def test(a,b):
c=[]
for item in b:
if item in a:
c.append(item)
return c
.append(item)
将在引用的列表末尾添加item
的值作为新元素
循环完成后,函数现在将按预期返回整个c
列表
使用
a=[2,3,5,8]
和b=[4,5,6,9,8]
的示例列表,调用test(a,b)
返回[5,8]
正确。列表必须具有相同的长示例:c[项目]
被计算为c[5]
,并且没有这样的索引。现在有意义了。感谢您将其分解。有没有办法在for语句中包含一个唯一的语句,使其不会与c中的数字重复?请尝试将if语句更改为:if(a中的项)和(c中的项):
我尝试过使用set(b),这很有效,但也希望了解if和方法。谢谢你,内森!