问题是:在满足以下所有条件的两个元组之间交换第二个元素:由两个 int
组成,每个都在 range(5)
中,元素相同位置不相等
如果它们是两个列表
,我可以简单地使用带有索引的变量交换,但是元组
是不可变的,所以我将两个元组解压到一个列表中,然后解压该列表分成四个变量并对变量重新排序...
示例代码
(请参阅声明变量的初始值,打印的值是预期的结果。)
a, b = [1,2], [3,4]
a[1], b[1] = b[1], a[1]
print(a)
print(b)
l1, l2 = (1,2), (3,4)
a, b, c, d = [*l1, *l2]
print((a, d))
print((c, b))
In [161]: a, b = [1,2], [3,4]
...: a[1], b[1] = b[1], a[1]
...: print(a)
...: print(b)
...:
...: l1, l2 = (1,2), (3,4)
...: a, b, c, d = [*l1, *l2]
...: print((a, d))
...: print((c, b))
[1, 4]
[3, 2]
(1, 4)
(3, 2)
我不想将元组转换为列表,我想知道是否有更好的方法来交换两个元组之间的第二个元素?
最佳答案
你说得对,元组是不可变的,你将无法绕过创建新的元组。如果您只想在不使用解包符号的情况下执行此操作,您可以执行类似的操作
l1, l2 = (1,2), (3,4)
a = (l1[0],l2[1])
b = (l2[0],l1[1])
如果速度是一个问题,使用 pypy 运行它会非常有效。
关于Python在两个整数的两个元组之间交换元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69474900/