我假设过滤是造成问题的原因,但我可能是错的。我正在尝试连接两个列表,每个列表都有可被3和5整除的数字。下面是我的代码:
alist = list(range(1,100))
blist = list(range(600,700))
newListA = (filter(lambda x: x%3==0 and x%5==0, alist))
newListB = (filter(lambda x: x%3==0 and x%5==0, blist))
newListC = (list(newListA), list(newListB))
list(newListC)
有些事情是错的。主要的一点是你没有连接列表,用括号你创建一个大小为2的tuple
,第一个元素是第一个列表,第二个元素是第二个列表。如果你想要tuple
使用方括号,你使用括号的任何地方都是lists
。要连接两个列表,请使用运算符+
。
alist = list(range(1,100))
blist = list(range(600,700))
newListA = list(filter(lambda x: x%3==0 and x%5==0, alist))
newListB = list(filter(lambda x: x%3==0 and x%5==0, blist))
newListC = newListA + newListB
print(newListC)
您可以简单地使用内置的extend
功能。 Refer to Python docs.
>>> alist = list(range(1,100))
>>> blist = list(range(600,700))
>>> newListA = list(filter(lambda x: x%3==0 and x%5==0, alist))
>>> newListB = list(filter(lambda x: x%3==0 and x%5==0, blist))
>>> print(newListA.extend(newListB))
总结和澄清,@Rushiraj Nenuji和@JosepJoestar都是正确的。连接列表有两种方法。
一个是old_list.extend(new_list)
,它接受new_list
并将old_list
连接到它。
使用此方法,您的代码可以是
alist = list(range(1,100))
blist = list(range(600,700))
newListA = list(filter(lambda x: x%3==0 and x%5==0, alist))
newListB = list(filter(lambda x: x%3==0 and x%5==0, blist))
newListC = list()
newListC.extend(newListA)
newListC.extend(newListB)
# newListC is now the concatenation of newListA and newListB
另一种方法是使用+
标志。所以list1 + list2
将返回一个连接list1
和list2
的值。
使用此方法,您的代码可以是
alist = list(range(1,100))
blist = list(range(600,700))
newListA = list(filter(lambda x: x%3==0 and x%5==0, alist))
newListB = list(filter(lambda x: x%3==0 and x%5==0, blist))
newListC = newListA + newListB
# newListC is now the concatenation of newListA and newListB