将两个列表的公共元素组合成on

2024-09-28 01:25:45 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我试图编写一个程序,将两个列表作为输入,然后将公共元素组合成一个新的列表。问题是我的代码总是返回一个空列表。有人知道我应该写些什么来解决这个问题吗?以下是我目前为止的代码:

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()

编辑:谢谢大家的评论。我已经编辑了一些部分,并修改了它,但仍在努力。我只需要确保在列表输入中忽略逗号。以下是我目前所掌握的情况:

^{pr2}$

Tags: 代码in列表forinputlenifmain
2条回答

您也可以使用集合,这可能更合适。在

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

请注意,这并不能保证订购的正确性,而且有多个副本的项目只会被复制一次。不管怎样,排序和乘法都是你必须仔细考虑的事情。在

您有for k in range(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])

但这是一种相当不和谐的方式。为什么不使用一套呢?在

冰树也是对的。。这是另一个问题。您可以通过删除两个赋值a = []b = []来解决icedtrees问题。这些行覆盖传递给函数的参数值,并丢弃传递给它的任何信息。在

相关问题 更多 >

    热门问题