2016-07-28 6 views
-1

タプルを引数とする関数を使用したいと思いますが、タプルのリストを持っていて、関数にタプルのリストを渡そうとするたびにタプルを受け取る関数上のタプルのリストを使用する

s = s.join(x) 
TypeError: sequence item 0: expected str instance, tuple found 

しかし、1つのタプルだけでは、そのリストの周りにリストがない場合、関数は期待どおりに機能します。自分で単一のタプルを取る関数に

[('abcd','1234','xyz'),('e.t.c', 'e.t.c', 'test')] 

私はこのようなタプルのリストを供給することができる方法はありますか?それは予想通りの印刷フォーマットされた文字列を返すこの関数に単一のタプルを入れるときは

def strFormat(x): 

    #Convert to string 
    s=' ' 
    s = s.join(x) 
    print(s) 

    #Split string into different parts 
    payR, dep, sal, *other, surn = s.split() 
    other = " ".join(other) 

    #Print formatting! 
    print ("{:5}, {:5} {:>10} {:10} £{:10}".format(surn , other, payR, dep, sal)) 

: - 感謝:)

EDIT これは、私はタプルのリストを供給しています機能です。この関数にタプルのリストを置くと、それは機能せず、エラーを返します。上記のようなタプルのリストが上記の関数で動作するようにするにはどうしたらいいですか?

+0

期待される結果はどのようなものでしょうか?私はあなたが 'str.join()'を呼び出すように見えるが、タプルのサンプルリストには文字列が含まれていないことに注意してください。あなたは私たちに[mcve]を教えてもらえますか? –

+0

関数は、それらを文字列に変換するためにタプルをフィードしようとしているし、印刷の書式設定を使用して結果のテーブルを作成します。私は質問のサンプルタプルで間違いを犯しました。それらは文字列のタプルです。 – RonB7

+0

だから、これらのタプルのそれぞれに何が起こると思いますか?リスト内のタプルごとに別々にその関数を呼び出そうとしましたか?あなたの質問は明確ではありません。 –

答えて

0

あなたはタプルに参加したい場合は、別途、リストの内包表記を使用することができます

[delimiter.join(x) for x in list_of_tup] # delimiter should be a string 

をそうしないと、タプルが、それらすべてに参加解凍する必要があります。その目的のためにネストされたリストの理解を使用することができますかitertools.chain

delimiter.join([item for tup in list_of_tup for item in tup]) 
関連する問題