所以我正在尝试编写一个程序,它将两个列表作为输入,然后将常用元素组合到一个新列表中。问题是我的代码不断返回一个空列表。有谁知道我应该写什么来解决这个问题?到目前为止,这是我的代码:
def main():
a = list(input("Enter list one: "))
b = list(input("Enter list two: "))
newlist1 = intersection(a,b)
print(newlist1)
def intersection(a,b):
a = []
b = []
newlist = []
for i in range(len(a)):
for j in range(len(b)):
if a[i] == b[j]:
for k in range(len(newlist)):
if newlist[k] != a[i]:
newlist.append(a[i])
return newlist
main()
编辑:感谢评论家伙。我已经编辑了一些部分并对其进行了更改,但仍在进行中。我只需要确保列表输入中的逗号被忽略。这是我到目前为止所做的:
def main():
a = list(input("Enter list one: "))
b = list(input("Enter list two: "))
for i in a:
a[i]=int(a[i])
for i in b:
b[i]=int(b[i])
newlist1 = intersection(a,b)
print(newlist1)
def intersection(a,b):
newlist = [0]
for i in a:
for j in b:
if a[i] == b[j]:
for k in newlist:
if k != a[i]:
newlist.append(a[i])
else:
continue
return newlist
答案 0 :(得分:0)
您for k in range(len(newlist)):
len(newlist)
始终为0
你想要这个
for i in range(len(a)):
for j in range(len(b)):
if a[i] == b[j]:
already_added = False
for k in range(len(newlist)):
if newlist[k] == a[i]:
already_added = True
break
if not already_added:
newlist.append(a[i])
尽管如此,这是一种相当单一的方式。为什么不使用一套?
icedtrees也是正确的......这是另一个问题。您可以通过删除两项作业a = []
和b = []
来修复icedtrees问题。这些行会覆盖传递给函数的参数值,并丢弃您传递给它的任何信息。
答案 1 :(得分:0)
您也可以使用可能更合适的集合。
a = list()
b = list()
set_a = set(a)
set_b = set(b)
intersection = set_a.intersection(set_b) # you have to convert to sets
intersection_list = list(intersection) # convert back to list if you need it
请注意,这并未对订购提供任何保证,而且多个副本中的项目只会被复制一次。订购和倍数都是您必须仔细考虑的事情。