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



初学者的问题。

我有两个订购的列表,

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

因此,list_1的n-元素对应于list_2的n-元素。

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

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

最好是,我按列表中的位置合并在字符串或数字值上。我在其他有序列表中也有同样的问题,但是对于这些列表,我想用字符串值替换数字值。I.A.用我想做的所有有序列表来解决我的麻烦:

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

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

您可以使用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

通过与有条件的表达结合并列表理解,您将获得想要的东西:

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

最新更新