比较两个字符串并返回每个字符串中更大的项目 - Python

时间:2018-01-18 13:03:12

标签: python string python-2.7 compare

我有两个等长字符串,它们是两个列表instantiationa的一部分,它们看起来像这样:

b

我想按顺序(按ASCII码)比较上面每个字符串中的每个项目,也要对列表的其余部分a[1] = '0 8 9' b[1] = '0 * 5 6' a进行比较。

我对这两个字符串的期望结果是:

b

我是Python的新手,我读过有关列表理解的内容,但在这种情况下我不知道如何使用它。我需要一些帮助,提前谢谢你!

编辑:我必须比较非数字值。所以我必须通过ASCII码比较它们。 (我对问题做了一些修改)

2 个答案:

答案 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 }(以字符串时间顺序排列的最大值)