如何以某种Python方式将列表中的所有字符串截断为相同的长度?

如何以某种Python方式将列表中的所有字符串截断为相同的长度?,python,Python,假设我们有一个列表,例如: g = ["123456789123456789123456", "1234567894678945678978998879879898798797", "6546546564656565656565655656565655656"] 我需要每个元素的前12个字符: ["123456789123", "123456789467", "654654656465"] 好的,我可以在for循环中建立第二个列表,类似这样: g2 = []

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

g = ["123456789123456789123456", 
     "1234567894678945678978998879879898798797", 
     "6546546564656565656565655656565655656"]
我需要每个元素的前12个字符:

["123456789123", 
 "123456789467", 
 "654654656465"]
好的,我可以在for循环中建立第二个列表,类似这样:

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

但我很确定还有更好的方法,现在还不能找到。有什么想法吗?

使用列表理解:

g2 = [elem[:12] for elem in g]
[elem[:12] for elem in g]
如果希望就地编辑
g
,请将切片分配语法与生成器表达式一起使用:

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


使用列表理解:

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

另一个选项是使用
映射(…)

b = map(lambda x: x[:9],g)

值得注意的是,如果字符串短于2个字符,它仍然可以在不抛出“indexer”的情况下工作。您只需保留原始字符串。