用python中的循环填充数组
我的问题如下,我有一个名为用python中的循环填充数组,python,Python,我的问题如下,我有一个名为crave=['word1','word2','word3','wordx']的数组,我想转换成ITEM=[['word1','word2','word3',['word4','word5','word6']等] 我使用了以下代码 buff=[['none','none','none']] n=10 ITEM=[] i=0 while 1>0 : buff[0][0]=crave[i] buff[0][1]=crave[i+1] buff[0][2]=c
crave=['word1','word2','word3','wordx']
的数组,我想转换成ITEM=[['word1','word2','word3',['word4','word5','word6']等]
我使用了以下代码
buff=[['none','none','none']]
n=10
ITEM=[]
i=0
while 1>0 :
buff[0][0]=crave[i]
buff[0][1]=crave[i+1]
buff[0][2]=crave[i+2]
ITEM.insert(len(ITEM),buff[0])
i=i+3
if i>n:
break
但是我得到的是['wordx-2','wordx-1','wordx'],['wordx-2','wordx-1','wordx'],['wordx-2','wordx-1','wordx']等等]
为什么会发生这种情况?:(您可以通过使用列表理解轻松做到这一点。
xrange(0,len(crave),3)
用于以3的间隔从0迭代到len(crave)。然后我们使用crave[i:i+3]
提取所需的数据
crave=['word1','word2','word3','word4','word5','word6','word7']
ITEM = [crave[i:i+3] for i in xrange(0, len(crave), 3)]
print ITEM
>>> [['word1', 'word2', 'word3'], ['word4', 'word5', 'word6'], ['word7']]
试试这个
crave = ['word1', 'word2', 'word3', 'word4', 'word5', 'word6', 'word7']
li = []
for x in range(0, len(crave), 3):
li.append(crave[x:x+3])
print li
关于“为什么会发生这种情况”的问题: 问题是buff[0]被.insert引用,而不是被复制。因此,在下一个循环中,当buff更改时,引用buff的任何内容也将更改 要进行显式复制,请使用list()
因此,您想将列表拆分为3个元素子列表?排序重要吗?我试图了解您的代码的功能,我不得不更改一些行以使其编译和运行。以下是我对它的理解:是的,排序很重要,特别是对最后一个(“断开”)三元组的处理-它确实有效:-)感谢感谢@Wolf。。。解释;-)
crave = ['word1', 'word2', 'word3', 'word4', 'word5', 'word6', 'word7']
li = []
for x in range(0, len(crave), 3):
li.append(crave[x:x+3])
print li
ITEM.insert(len(ITEM),list(buff[0]))