如何连接2个筛选列表?

问题描述 投票:2回答:3

我假设过滤是造成问题的原因,但我可能是错的。我正在尝试连接两个列表,每个列表都有可被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)
python python-3.7
3个回答
2
投票

有些事情是错的。主要的一点是你没有连接列表,用括号你创建一个大小为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)

1
投票

您可以简单地使用内置的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))

0
投票

总结和澄清,@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将返回一个连接list1list2的值。

使用此方法,您的代码可以是

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
© www.soinside.com 2019 - 2024. All rights reserved.