我有两个等长字符串,它们是两个列表instantiation
和a
的一部分,它们看起来像这样:
b
我想按顺序(按ASCII码)比较上面每个字符串中的每个项目,也要对列表的其余部分a[1] = '0 8 9'
b[1] = '0 * 5 6'
和a
进行比较。
我对这两个字符串的期望结果是:
b
我是Python的新手,我读过有关列表理解的内容,但在这种情况下我不知道如何使用它。我需要一些帮助,提前谢谢你!
编辑:我必须比较非数字值。所以我必须通过ASCII码比较它们。 (我对问题做了一些修改)
答案 0 :(得分:3)
''.join(map(max, a, b))
演示:
>>> a = '0 8 9'
>>> b = '0 * 5 6'
>>> ''.join(map(max, a, b))
'0 * 8 9'
答案 1 :(得分:2)
注意:以下是仅要求比较数字的要求(在OP编辑之前)。有关OP的新要求,请查看@StefanPochmann's answer
使用list comprehension
:
>>> [ max(map(int,ele)) for ele in zip(a.split(),b.split()) ]
#driver values:
IN : a = '0 1 8 9'
IN : b = '0 4 5 6'
OUT : [0, 4, 8, 9]
接下来很容易。只需join
他们。所以,最后:
>>> l = [ str(max(map(int,ele))) for ele in zip(a.split(),b.split()) ]
>>> ' '.join(l)
#driver values:
IN : a = '2 1 8 9'
IN : b = '11 4 5 6'
OUT : '11 4 8 9'
IMP:此处map
处理涉及在max
之类的数字之间找到[2, 11]
的情况,如果没有它,则会选择2
}(以字符串时间顺序排列的最大值)