如何从列表中获取小于或等同于python中另一个列表的所有值

时间:2016-03-08 02:03:50

标签: python

我有两个清单:

List1 = [1,5,9,15,17,23]
List2=[1,2,3,8,15,20,29,27,34,38,39,56]

我想比较List1和List2,并希望获得List1中的所有值以及List2中的那些值,这些值要小于或等同于List1中的任何值。

所以我的结果列表将是 [1,5,9,15,17,23,1,2,3,8,15,20]

4 个答案:

答案 0 :(得分:1)

您可以使用列表理解:

max1 = max(List1)
max2 = max(List2)
newlist = [x for x in List1 if x <= max2] + [x for x in List2 if x <= max1]

您可以将最大调用放入列表推导中,但这会更慢。 (它们需要针对List1和List2中的每个项目进行一次评估,而不是仅评估一次。)

答案 1 :(得分:1)

l1  = [1,5,9,15,17,23]
l2 = [1,2,3,8,15,20,29,27,34,38,39,56]

max_val = max(l1)

l1 + [val for val in l2 if val <= max_val]

答案 2 :(得分:1)

这将连接List1和List2的每个元素val,它大于List1的max元素并存储在List3中。

List1 = [1,5,9,15,17,23]
List2 = [1,2,3,8,15,20,29,27,34,38,39,56]

List3 = List1 + [val for val in List2 if val <= max(List1)]

答案 3 :(得分:-1)

我相信这是一个更好的选择:

max1 = max(List1)
result = List1[:]

for x in List2:
    if x <= max1:
        if not x in result:
            result.append(x)

如果您不需要担心更改List1,您可以使用它而不是复制它的项目。此外,如果您允许重复,则可以删除if中的x。