对立面的比较与替代

2024-10-06 12:31:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含两项的列表,我想c等于b的对立面?你知道吗

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

如何让c保持'rzz3'?你知道吗


Tags: 列表对立面rzz2rzz3
3条回答

我很想在这里得到一个集合,它可能返回零个或多个结果。。。你知道吗

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

如果总是两个人的名单。。。你知道吗

因为列表只有两项,一个简单的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
>>>

相关问题 更多 >