2

for ループが正しく機能しているにもかかわらず、リスト内包表記を機能させるのに問題があります。reportlabのTableクラスでテーブルを作成するために使用しています

# 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新しい要素を作成し、取得したものをすべて受け取ります。リストを取得すると、このリストを単一の新しい要素として追加します。

extenditerable を取得し、この iterable に含まれる新しい要素を追加します。

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