嵌套列表理解

时间:2017-10-13 14:05:04

标签: python python-3.x list-comprehension

我经常遇到一个问题,我试图从字符串中创建一定长度的列表。

这是我有一个字符串的示例,但是想要列出长度为3的列表:

x = '123456789'

target_length = 3

new = [i for i in x]
final = [new[i:i+target_length] for i in range(0, len(x), target_length)]

print(final)

输出:

[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]

所以,这很有效,但感觉很笨重。

有没有更好的方法将这些参数组合成一行,或者您认为这会使代码不可读?

2 个答案:

答案 0 :(得分:2)

如果你想在一行中完成,你可以在你的理解中创建列表:

x = '123456789'
target_length = 3

[list(x[i:i+target_length]) for i in range(0, len(x), target_length)]
>> [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]

答案 1 :(得分:0)

这是一行:

f2 = [[x[(j * target_length) + i] for i in range(target_length)] for j in range(target_length)]