2

即使 for 循环正常工作,我也无法让我的列表理解语句工作。我用它来创建一个带有reportlab的表类的表

# Service Table
heading = [('Service', 'Price', 'Note')]

# This doesn't work as in there is no row in the output
heading.append([(s['name'],s['price'],s['note']) for s in services])
table = Table(heading)

# This displays the table correctly
for s in services:
    heading.append((s['name'], s['price'], s['note']))
table = Table(heading)
4

1 回答 1

8

使用extend代替append

heading.extend((s['name'],s['price'],s['note']) for s in services)

append创建一个新元素并获取它得到的任何东西。如果它得到一个列表,它会将这个列表作为一个新元素附加。

extend获取一个可迭代对象并添加与该可迭代对象包含的一样多的新元素。

a = [1, 2, 3]
a.append([4,5])
# a == [1, 2, 3, [4, 5]]

a = [1, 2, 3]
a.extend([4,5])
# a == [1, 2, 3, 4, 5]
于 2013-03-01T09:06:24.767 回答