3

問題: リストをループするにはどうすればよいですか。各リスト項目の最初の文字を確認します。最初の文字= "0"が「0」を削除した場合は、リスト内の次の項目を見て同じ評価を行います。それ以外: そのままにしておきます。

これまでのコード:

gList = ["094G.016", "094G.019", "094G.005", "194G.015"]

for x in gList:
    lGrid[i].lstrip("0")
    print gList
else:
    pass

望ましい出力:

gList = ["94G.016", "94G.019", "94G.005", "194G.015"]

リサーチ:

リストの最初の項目からゼロを削除するために使用できますgList.lstrip("0")が、次のエントリに移動してプロセスを繰り返す方法がわかりません。

あるいはgList[0][0]、最初のリスト/文字項目を選択するために使用できることはわかっていますが、リストをループする方法が必要です。

編集: ジェネレーターの使用:

これまでのコード:

def rem0(data):
    (x.lstrip('0') for x in lGrid)
    yield x

for i in rem0(lGrid):
    print i

望ましい出力:

gList = ["94G.016", "94G.019", "94G.005", "194G.015"]
4

3 に答える 3

4
>>> gList = ["094G.016", "094G.019", "094G.005", "194G.015"]
>>> [x.lstrip('0') for x in gList]
['94G.016', '94G.019', '94G.005', '194G.015']

アプローチの改善: 反復ごとにxは現在のアイテムを指すため、lstrip()xではなくxに適用しますgList

アイテムの使用:

for x in gList:  
    x.lstrip("0") 

インデックスを使用

for index in xrange(len(gList)):   #xrange() or(range() in python 3.x) returns a iterable which contains values from 0 to len(gList)-1 
    gList[index].lstrip("0")
于 2012-07-05T21:23:15.710 に答える
1

コードを修正するには:

gList = ["094G.016", "094G.019", "094G.005", "194G.015"]

outL=[]
for x in gList:
    outL.append(x.lstrip("0"))

print outL
# prints ['94G.016', '94G.019', '94G.005', '194G.015']

他の人が言っているように、これはリスト内包で簡単です:

>>> [x.lstrip('0') for x in gList]
['94G.016', '94G.019', '94G.005', '194G.015']

または、さらに良いことに、ジェネレーター:

>>> (x.lstrip('0') for x in gList)
<generator object <genexpr> at 0x10c27c140>
>>> list(_)
['94G.016', '94G.019', '94G.005', '194G.015']

編集

ジェネレータは2つの方法で簡単に実行できます。

最初は関数を書くことです:

def rem0(data):
    for x in data:
       yield x.lstrip('0')

for i in rem0(gList):
   print i

もう1つは、必要な場所でのgen式です。

for i in (x.lstrip('0') for x in gList): 
   print i

あるいは:

g=(x.lstrip('0') for x in gList)
for i in g:
    ...

どちらの方法でも、目的の出力が印刷されます。

于 2012-07-05T21:39:22.730 に答える
1

Python ドキュメントでリスト内包表記の美しさを確認してください。

解決策は

アイテムの削除:

[item for item in gList if item[0] != '0']

または先頭の「0」を削除します

[item.lstrip('0') for item in gList]

コメントを投稿できないため、回答を更新しました。

于 2012-07-05T21:24:51.390 に答える