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 回答