的具体解决方案是使用切片与步幅:
source = ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b']
list1 = source[::4]
list2 = source[1::4]
list3 = source[2::4]
list4 = source[3::4]
source[::4]
拍摄每一个第四元件,开始于索引0;其他切片仅改变起始索引。
通用解决方案是使用循环进行切片,并将结果存储在外部列表中;列表理解可以这样做很好:
def slice_per(source, step):
return [source[i::step] for i in range(step)]
演示:
>>> source = ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b']
>>> source[::4]
['1', '5', '9']
>>> source[1::4]
['2', '6', 'a']
>>> def slice_per(source, step):
... return [source[i::step] for i in range(step)]
...
>>> slice_per(source, 4)
[['1', '5', '9'], ['2', '6', 'a'], ['3', '7', 'b'], ['4', '8']]
>>> slice_per(source, 3)
[['1', '4', '7', 'a'], ['2', '5', '8', 'b'], ['3', '6', '9']]
不产生新的变数。请将您的列表存储在父列表中。 –