python - 交换存储在元组中的两个列表的位置

标签 python data-structures tuples assign

我有一个包含多个列表的元组,我需要动态交换两个列表中项目的值。例如,tuple_of_lists = (**list1**:[1,1,1],list2:[2,2,2],**list3**:[3,3,3])我需要能够输入--swap x & y (1,3)--并且在不更改列表名称的情况下,输出为 ( **list1**:[3,3,3],list2:[2,2,2],**list3**:[1,1,1] )

对Python(以及一般的编码)仍然很陌生,并且我认为我缺少一些关于数据结构的东西。

我正在尝试使用类似的东西:

intermediary = tuple_of_lists[1] 
tuple_of_lists[1] = list(tuple_of_lists[3]) 
tuple_of_lists[3] = list(intermediary)

但是我收到一个错误,元组不接受赋值——即使它只是实际被更改的列表?有没有简单的方法可以解决?

最佳答案

元组是不可变的,因此您无法更改它们的元素。然而,列表是可变的。

您可以做的是从元组创建一个列表,交换元素并将列表转换回元组:

tuple_of_lists = ([1,1,1], [2,2,2], [3,3,3])
lt =  list(tuple_of_lists)                    #create list from tuple
lt[2],lt[0] = lt[0],lt[2]                     #swap items 0 and 2
tuple_of_lists = tuple(lt)                    #convert to tuple

print(tuple_of_lists)

输出:

([3,3,3], [2,2,2], [1,1,1])

关于python - 交换存储在元组中的两个列表的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60023616/

相关文章:

swift - Swift 中奇怪的元组展开

python - Scrapy:非阻塞暂停

python - 有人可以向我解释为什么第二种方法没有完全更新字符串吗?

python - 如何访问用于在 Google App Engine for python 中存储数据的低级 API

python - 无法从 S3 存储桶下载文件

java - 不区分大小写的三元搜索树

C 创建有序优先级队列

algorithm - 在插入时使用重分配的 B 树

python - 如何在 python 中使用列表理解从列表中获取元组

python - 打印输出格式