我有一个包含两个项目的列表,我希望c
与b
相反?
a = ['rzz2', 'rzz3']
b = 'rzz2'
如何让c
暂停'rzz3'
?
答案 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'