我不確定大小的列表:解壓目錄到元組的中間
l = [...]
我要解開這個名單到具有其他元素的元組,但低於失敗:
t = ("AA", "B", *l, "C")
如何形成以下內容?
t = ("AA", "B", l[0], ..., l[:-1], "C")
編輯:這也將是不錯的做了切片[A:B]只:
t = ("AA", "B", l[a], ..., l[b], "C")
我不確定大小的列表:解壓目錄到元組的中間
l = [...]
我要解開這個名單到具有其他元素的元組,但低於失敗:
t = ("AA", "B", *l, "C")
如何形成以下內容?
t = ("AA", "B", l[0], ..., l[:-1], "C")
編輯:這也將是不錯的做了切片[A:B]只:
t = ("AA", "B", l[a], ..., l[b], "C")
對於Python 3.5,你現在可以使用你的第一種方法:
>>> l = [1, 2, 3]
>>> t = ("AA", "B", *l, "C")
>>> t
('AA', 'B', 1, 2, 3, 'C')
您可以使用片,就像你所期望的:
>>> ("AA", "B", *l[:-1], "C")
('AA', 'B', 1, 2, 'C')
的相關PEP,對參考:PEP448
不能代這樣的價值觀解壓到一個元組(尚 - 見PEP 448)因爲拆箱只會發生在左側的表達式上,或者如錯誤信息所示,分配目標。
另外,賦值目標應該有有效的Python變量。在你的情況下,你也有元組中的字符串文字。
但是你可以建立你想要的元組,通過連接三元組,這樣
>>> l = [1, 2, 3, 4]
>>> ("A", "B") + tuple(l[:-1]) + ("C",)
('A', 'B', 1, 2, 3, 'C')
>>> ("A", "B") + tuple(l) + ("C",)
('A', 'B', 1, 2, 3, 4, 'C')
可以flatten the list,然後轉換成元組。
>>> import itertools
>>> l=[1,2,3,4]
>>> t = ('A', 'B', l, 'C')
>>> t
('A', 'B', [1, 2, 3, 4], 'C')
>>> tuple(itertools.chain.from_iterable(t))
('A', 'B', 1, 2, 3, 4, 'C')
>>>
這是按預期工作,謝謝,雖然我認爲*符號應該支持糖,因爲噸他很醜。我想我可以寫一個函數來完成它。 – Tommy