Python:合并两个有序列表,有条件地替换元素

时间:2017-03-12 11:28:42

标签: python list python-3.x replace merge

初学者的问题。

我有两个订单相同的订单,

list_1=['de', 'de', 'de', '3']
list_2=['6', '5', '3', 'not']

所以list_1的第n个元素对应于list_2的第n个元素。

我想在坚持订单的同时合并这两个列表。此外,合并产生的清单应完全由数字组成,即

merged_list=['6', '5', '3', '3']

优选地,我在条件列表中有条件地合并字符串或数值。我对其他有序列表有同样的问题,但是对于那些列表,我想用字符串值替换数值。 .A。用我所做的所有有序列表来解决我的麻烦我想做一些像:

replace element_n of list_i with element_n of list_j if element_n of list_i equals 'z'

其中z是数值或字符串值,具体取决于列表的性质。

1 个答案:

答案 0 :(得分:0)

您可以使用zip汇总两个列表项:

>>> list_1 = ['de', 'de', 'de', '3']
>>> list_2 = ['6', '5', '3', 'not']
>>> zip(list_1, list_2)
<zip object at 0x1029e53c8>
>>> list(zip(list_1, list_2))
[('de', '6'), ('de', '5'), ('de', '3'), ('3', 'not')]

str.isdigit检查给定字符串是否为数字:

>>> '123'.isdigit()
True
>>> 'de'.isdigit()
False

通过与conditional expressionlist comprehension相结合,您可以获得所需内容:

>>> [a if a.isdigit() else b for a, b in zip(list_1, list_2)]
['6', '5', '3', '3']