2011-11-07 7 views
1

変化する浮動幅のリストを反復しようとしています。Python float幅のリストを反復する:TypeError:シーケンスが期待される、ジェネレータが見つかりました

[10.5, 15.5, 3.7] <- Randomly generated 

このフロートリストを使用して、印刷しようとしている文字列のリストの間にスペースを入れています。私は、私はこのエラーを取得していますなぜ

TypeError: sequence expected, generator found 

は誰が説明でき、エラーを取得しています

print ''.join('%*s' %i for i in zip(WIDTHS, LIST_OF_STRINGS)) 

経由でこれを行うのですか?

EDIT:Pythonのバージョン2.4

+0

どのpythonバージョンですか? – glglgl

答えて

1

いくつかの方法でコードを修正しました。フォーマット文字列の幅の値がfloatではなく、2つのintは、.で区切ら

'   a    b c' 

strings = ['a','b','c'] 
widths1 = [10, 15, 3] 
widths2 = [5, 5, 7] 
''.join('%*.*s' %i for i in zip(widths1, widths2, strings)) 

結果:今ではここ(Pythonの2.7)を動作します。

2

あなたが実際に

TypeError: * wants int 

は最初のint型へのあなたの浮動小数点数に変換し、エラーメッセージを取得する必要があります

widths = map(int, widths) 

例:

>>> widths = [10.5, 15.5, 3.7] 
>>> s = ["a", "b", "c"] 
>>> widths = map(int, widths) 
>>> ''.join('%*s' %i for i in zip(widths, s)) 
'   a    b c' 
関連する問題