13

次のようなリストがあるとします。

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

各要素の最初の 12 文字が必要です。

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

わかりました、次のような for ループで 2 番目のリストを作成できます。

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 に答える