列表理解选择索引

atp*_*atp 1 python list-comprehension matrix

假设我有一个这样的文件(假装它是一个矩阵):

abcde
fghik
lmnop
Run Code Online (Sandbox Code Playgroud)

我想把它放在2d列表中,但只有列到索引3:

 #  0   1   2   3
 [['a','b','c','d'],
  ['f','g','h','i'],
  ['l','m','n','o']]
Run Code Online (Sandbox Code Playgroud)

如何使用列表理解来做到这一点?我知道我可以循环,但我正在寻找一种更清洁的方式.

f = open('file.txt')
lines = f.readlines()
matrix = [[a for a in b] for b in lines] # this gets all columns, up to 4
Run Code Online (Sandbox Code Playgroud)

我也可以在内部列表理解中使用enumerate/if来检查列.这是最干净的吗?

ske*_*ajo 7

如果我正确地理解了这个问题,这应该可行(但也许我已经过度简化了).注意内在理解中的[:4]:

f = open('file.txt')
lines = f.readlines()
matrix = [[a for a in b[:4]] for b in lines] # this gets all columns, up to 4
Run Code Online (Sandbox Code Playgroud)