我有两个清单:
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]
答案 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。