2016-07-28 44 views
-1

我想使用一個函數,它將元組作爲參數,但是我有一個元組列表,每當我嘗試將元組列表提交給它返回的函數時使用元組列表的元組列表

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

但是,只有一個元組本身沒有列表,函數將按預期工作。

有沒有一種方式,我可以養活這樣的元組的列表:

[('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)) 

把一個元組給這個函數返回預期的打印格式的字符串時。將元組列表放入此函數時,它不起作用並返回錯誤。我如何做到這一點,所以像上面那樣的元組列表將對上述函數起作用?

+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])