如何将列表中的每个第n个元素都放在自己的列表中?

时间:2016-11-21 22:11:22

标签: python python-3.x

比如说我有一个像这样的列表:

values = ['Godel Escher Bach', 'What if?', 'Thing Explainer', 'Alan Turing: The Enigma', ' 1979', ' 2014', ' 2015', ' 2014', ' Douglas Hofstadter', ' Randall Munroe', ' Randall Munroe', ' Andrew Hodges']

我希望每4个元素(或者我定义的任何元素)并将它们放入自己的列表中,这样就可以了

values = [['Godel Escher Bach', 'What if?', 'Thing Explainer', 'Alan Turing: The Enigma'], [' 1979', ' 2014', ' 2015', ' 2014'], [' Douglas Hofstadter', ' Randall Munroe', ' Randall Munroe', ' Andrew Hodges']]

我的尝试是创建一个for循环并遍历所有元素并将它们covnert到列表中:

values = ['Godel Escher Bach', 'What if?', 'Thing Explainer', 'Alan Turing: The Enigma', ' 1979', ' 2014', ' 2015', ' 2014', ' Douglas Hofstadter', ' Randall Munroe', ' Randall Munroe', ' Andrew Hodges']
for x in range(0,len(values),1):
    values[x:x+4] = [values[x:x+4]]

然而,当我尝试运行时,我得到了

[['Godel Escher Bach', 'What if?', 'Thing Explainer', 'Alan Turing: The Enigma'], [' 1979', ' 2014', ' 2015', ' 2014'], [' Douglas Hofstadter', ' Randall Munroe', ' Randall Munroe', ' Andrew Hodges'], [], [], [], [], [], [], [], [], []]

所以我的代码是我想要它做的,但它也留下了几个空的[],我不想要。我该如何解决这个问题?

编辑::: NVM,我修好了。

我做了

for x in range(0,int(len(values)/4),1):
    values[x:x+4] = [values[x:x+4]]

并且有效

感谢那些花时间回答这个问题的人,即使最终我不需要帮助,我也很感激你的时间。

1 个答案:

答案 0 :(得分:0)

你应该将长度除以4或n

for x in range(0,len(values)/4):
     values[x:x+4] = [values[x:x+4]]