独立列清单(?)

2024-05-12 12:37:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在试验列表,并试图显示以下代码段:

----------
---hello--
----------

但要做到这一点,我需要让3'列表彼此独立。有办法吗?你知道吗

电流输出当然是:

---hello--
---hello--
---hello--

()

listSmall = ['-','-','-','-','-','-','-','-','-','-',]
listBig = [listSmall, listSmall, listSmall]
word = 'hello'
wordPosX = 3
wordPosY = 2

for i in word:
    listBig[wordPosY][wordPosX] = i
    wordPosX = wordPosX + 1

i = 0
while i != 3:
    print ''.join(listBig[i])
    i = i + 1

Tags: inhello列表for代码段word电流print
3条回答

当你把listSmall放进listBig时,你想复制它。您可以使用list函数:

listBig = [list(listSmall), list(listSmall), list(listSmall)]

这是因为list是可变的。你知道吗

listBig = [listSmall, listSmall, listSmall]

使listBig指向同一可变列表三次,因此当您通过其中一个引用更改此可变列表时,您将通过所有三个引用看到此更改。你知道吗

您应该列出三个不同的列表:

listBig = [ ['-'] * 10 for _ in range(3)] 

根本不需要listSmall。你知道吗

整个代码:

listBig = [ ['-'] * 10 for _ in range(3)] 
word = 'hello'
wordPosX, wordPosY = 3, 1
listBig[wordPosY][3: (3+len(word))] = word
for v in listBig:
    print(''.join(v))

使用list构造函数生成listSmall的浅拷贝

listBig = [list(listSmall) for i in range(3)]

另一种等效的(可读性较差的IMO)方法是使用空切片:

listBig = [listSmall[:] for i in range(3)]

相关问题 更多 >