0

途中でいくつかの条件を置いて、他のリストからいくつかのリストを作成しようとしています。これらのリストを最終的にcsvに書きたいと思います。これが私が試みたコードです。

x = [None]*1000
y = [None]*1000
z = [None]*1000
i = 0 
for d in range(0,len(productID)):
    for j in range(0,len(productID[d])):
        if productID[d][j].startswith(u'sku'):

            x[i] = map[productID[d][j]]
            y[i] = name[d]
            z[i] = priceID[d][productID[d][j]].get(u'e')

            i = i + 1  

plan_name = x[0:i]
dev_name  = y[0:i]
dev_price = z[0:i]

これはうまく機能していますが、これを行うにはもっと良い方法があるはずです。最初にリストを定義せずに、ループ中にリストを作成する方法を誰かが提案できますか?

4

1 に答える 1

3

.append()代わりに、最初は空のリストにアイテムを追加するために使用します。

x, y, z = [], [], []
for d, sublist in enumerate(productID):
    for entry in sublist:
        if entry.startswith(u'sku'):
            x.append(map[entry])
            y.append(name[d])
            z.append(priceID[d][entry].get(u'e'))

Python はシーケンスを直接ループできることに注意してください。通常、インデックスはまったく必要ありません。代わりに、関数を使用enumerate()して外側のループにインデックスを追加しました (そこにインデックスを付ける必要があるように思われるためname) priceID

.append()リストの最後に項目を追加します。

>>> foo = []
>>> foo.append('bar')
>>> foo.append('spam')
>>> foo
['bar', 'spam']

Python チュートリアルを読み直すことをお勧めします。Python リストがどのようにうまく機能するかを説明しています。

于 2013-02-03T15:15:55.343 に答える