13

假设我们有一个列表,例如:

g = ["123456789123456789123456", 
     "1234567894678945678978998879879898798797", 
     "6546546564656565656565655656565655656"]

我需要每个元素的前十二个字符:

["123456789123", 
 "123456789467", 
 "654654656465"]

好的,我可以在 for 循环中构建第二个列表,如下所示:

g2 = []
for elem in g:
    g2.append(elem[:12])

但我很确定有更好的方法,现在无法弄清楚。有任何想法吗?

4

3 回答 3

20

使用列表推导:

g2 = [elem[:12] for elem in g]

如果您更喜欢g就地编辑,请使用带有生成器表达式的切片赋值语法:

g[:] = (elem[:12] for elem in g)

演示:

>>> g = ['abc', 'defg', 'lolololol']
>>> g[:] = (elem[:2] for elem in g)
>>> g
['ab', 'de', 'lo']
于 2012-07-04T10:00:21.990 回答
6

使用列表推导:

[elem[:12] for elem in g]
于 2012-07-04T10:00:39.917 回答
5

另一种选择是使用map(...)

b = map(lambda x: x[:9],g)
于 2012-07-04T10:46:36.743 回答