截断列表列表中项目的更好方法

时间:2018-05-21 21:10:07

标签: python

我有一长串列表,其中列表中的第一个元素是一个长字符串,我需要截断为一个较短的字符串。
我目前正在两次迭代列表。一旦缩短第一个元素,第二个元素为输出格式化:

for i in range(len(prefData)):
    temp = prefData[i][0]
    temp = temp[:40]
    prefData[i][0] = temp

for row in prefData:
    print('formatting strings'.format(*row))

有没有办法只迭代列表一次并在第二次迭代中包含截断步骤?我想更改列表元素,而不是截断输出。

2 个答案:

答案 0 :(得分:2)

row是一个列表,您无需额外的索引步骤或临时变量

即可更新它
for row in prefData:
    row[0] = row[0][:40]
    print('formatting strings {} {} {}'.format(*row))

答案 1 :(得分:0)

For循环是一个非常缓慢的过程。您可以通过重新格式化prefData来快速截断每一行。

这样的事情:

prefData = [ [r[0][:40]]+r[1:] for r in prefData]

它通常比循环更快。