python - 元组是不可变的,在替换其条目之前创建列表

标签 python list numpy tuples

我试图对列表和 numpy 数组进行一些简单的操作,但陷入了一些简单的事情:

a=np.arange(12)
a
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
a=np.reshape(a,(3,4))
a
array([[ 0,  1,  2,  3],
   [ 4,  5,  6,  7],
   [ 8,  9, 10, 11]])

b=np.arange(12,24)
b
array([12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])
b=np.reshape(3,4)
list1 = [(a,'a'),(b,'b')]
data = [(i, j) for i,j in list1]

当我尝试这样做时:

data[0][0]=np.delete(data[0][0], np.s_[-1::],0)

我收到以下错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

但如果我这样做:

cop=np.delete(data[0][0], np.s_[-1::],0)
cop
array([[0, 1, 2, 3],
   [4, 5, 6, 7]])

它工作得很好。

但我也做不到:

data[0][0]=np.copy(cop)

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

但是如果我检查类型,两者实际上都是数组:

type(cop)
<type 'numpy.ndarray'>

type(data[0][0])
<type 'numpy.ndarray'>

我找了好几个小时都找不到错误。

最佳答案

然后我意识到数据实际上是一个元组。

这就是解决问题的方法:

data = [[i, j] for i,j in list1]

然后我可以替换像 data[0][0] 这样的元素

关于python - 元组是不可变的,在替换其条目之前创建列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14503660/

相关文章:

Python tkinter 禁用按钮,直到所有字段都被填满

python - 使用 python 返回平方整数列表

ios - Swiftui 列出 Mac Catalyst 上不匹配的部分

python - 压缩文件上的高效 numpy.fromfile?

numpy - 具有负相似度的 TensorFlow Cookbook Skip-Gram 模型

python - pandas sort_values 返回意外结果

python - 在 Python : sqlalchemy. exc.programminingerror 语法错误处或附近执行原始 SQL 查询时出现问题

python - 从 Python 列表中删除奇数索引元素

java - 如何进行注释,将该类型的所有类添加到列表中

python - Pandas - 使用算术将新行添加到数据框