我一直在尝试.remove()
和del
,但由于某些原因,我无法删除一个元组.
listpack_list = (["data", "data", "data"], ["test", "test", "test"], ["sof", "sof", "sof"])
理想情况下,我希望随机选择一个元组列表,例如:["test", "test", "test"]
第一个变量listpack_list[1][0]
将被打印出来,另外两个元素将被放入变量Main1和Main2中,然后它将继续从listpack_data中删除自己。
每次它随机选择一个元组集时,它都会执行打印和更改变量删除操作。
关于我如何做到这一点,有什么建议吗?
发布于 2013-12-20 04:52:40
发布于 2013-12-20 05:18:42
首先,正如其他人所说,元组是不可变的。您不能更改元组的位置,但您可以通过订阅或理解元组来创建新元组。
如果您正在讨论对元组中的列表进行处理,请小心,因为Python中的内容在这里变得很奇怪。你可以用pop把整件事弄清楚:
In [11]: listpack_list = (["data", "data", "data"], ["test", "test", "test"], ["sof", "sof", "sof"])
In [12]: listpack_list[0].pop()
Out[12]: 'data'
In [13]: listpack_list
Out[13]: (['data', 'data'], ['test', 'test', 'test'], ['sof', 'sof', 'sof'])
虽然其他操作似乎失败,但仍然有效(!):
In [13]: listpack_list
Out[13]: (['data', 'data'], ['test', 'test', 'test'], ['sof', 'sof', 'sof'])
In [14]: listpack_list[1] += ['test']
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-14-68991a0001f4> in <module>()
----> 1 listpack_list[1] += ['test']
TypeError: 'tuple' object does not support item assignment
In [15]: listpack_list
Out[15]: (['data', 'data'], ['test', 'test', 'test', 'test'], ['sof', 'sof', 'sof'])
因此,因为不可变元组包含可变列表,所以可以更改元组内部的内容,但这肯定不是最好的方法。如果您对实现有控制,只需在开始的步骤中列出列表而不是元组。如果你不这样做,我建议你用一个理解的方法来得到一个列表,然后处理这个问题。
https://stackoverflow.com/questions/20696487
复制相似问题