相反的比较和替代

时间:2014-10-24 17:58:55

标签: python list

我有一个包含两个项目的列表,我希望cb相反?

a = ['rzz2', 'rzz3']
b = 'rzz2'

如何让c暂停'rzz3'

4 个答案:

答案 0 :(得分:5)

我很想在这里找一套,这可能会返回零或更多结果...

a = ['rzz2', 'rzz3']
b = 'rzz2'
print {b}.symmetric_difference(a)
# set(['rzz3'])

答案 1 :(得分:3)

c = a[1 - a.index(b)]

如果它总是列出两个......

答案 2 :(得分:2)

因为列表只有两个项目,所以简单的conditional expression可以正常工作:

>>> a = ['rzz2', 'rzz3']
>>> b = 'rzz2'
>>> c = a[0] if a[0] != b else a[1]
>>> c
'rzz3'
>>>

性能方面,这是最快的解决方案:

>>> from timeit import timeit
>>> a = ['rzz2', 'rzz3']
>>> b = 'rzz2'
>>> timeit('a[0] if a[0] != b else a[1]', 'from __main__ import a, b')
0.45458095931186787
>>> timeit('a[1 - a.index(b)]', 'from __main__ import a, b')
1.0331033692829674
>>> timeit('{b}.symmetric_difference(a)', 'from __main__ import a, b')
0.9464230789108647
>>> timeit('[i for i in a if i!=b][0]', 'from __main__ import a, b')
2.0873136110874384
>>>

答案 3 :(得分:0)

In [201]: a = ['rzz2', 'rzz3']

In [202]: b = 'rzz2'

In [203]: c = [i for i in a if i!=b][0]

In [204]: c
Out[204]: 'rzz3'

In [205]: c = a[1]

In [206]: c
Out[206]: 'rzz3'