python - 将元素附加到Python数组的列表之一

标签 python python-3.x

python的版本是3.7.3 我想创建一个列表数组,其中所有长度都不相等。 我试过了

l= [[]] * 38
l[25].append['QQ']

它将显示 [['AA'], ['AA'], ['AA'], ['AA'], ['AA'], ['AA'], ['AA'], [ 'AA'], ['AA'], ['AA'], ['AA'], ['AA'], ['AA'], ['AA'], ['AA'], ['AA ']、['AA']、['AA']、['AA']、 ['AA'], ['AA'], ['AA'], ['AA'], ['AA'], ['AA'], ['AA'], ['AA'], [' AA']、['AA']、['AA']、['AA']、['AA']、['AA']、['AA']、['AA']、['AA' ], ['AA']]

l= [['']] * 38 是相同的

我想知道为什么我不能使用追加功能。

最佳答案

不要在列表上使用 * 运算符,除非您想将每个元素视为相同。其作用是为一个元素分配一个内存空间,并使用相同的空间复制所有元素。因此,对任何元素所做的任何更改都会反射(reflect)所有元素的更改。

这里唯一的选择是使用循环。

>>> l = [[] for _ in range(38)]
>>> l[25].append('AA')
>>> l
[[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], ['AA'], [], [], [], [], [], [], [], [], [], [], [], []]

有关此问题的更多信息,请参见此处 Changing an element in one list changes multiple lists

关于python - 将元素附加到Python数组的列表之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58370958/

相关文章:

python - 如何优化python代码(运行时间应小于10s)?

python - 将包含数字和一些破折号的列转为 int?

python-3.x - 如何减少数组中的重复数据

python - 连接被对方​​拒绝 : 10061: No connection could be made because the target machine actively refused it

python 3.1 与 pydev

python - 如何在Hadoop流中使用opt解析器作为映射器指定python脚本

python - 在 Python 上按字母顺序对 csv 文件进行排序

python-3.x - 如何使用帧单元制作 TIME 字幕(.srt、.smi 等)

python - 当 IP 用作 ARP 数据包中的范围时,Scapy 不起作用

python-3.x - 如何在收到后 24 小时内下载 Outlook 附件?