有沒有辦法解壓成不同的類型?是這樣的:# data = [4, "lorem", "ipsum", "dolor", "sit", "amet"]
(parts, *words) = datadata提供。我從不分配這個值。我添加作為例子。 parts必須是一個 int,列表的所有其余部分都被分配為字符串列表。我發現的唯一方法是將變量重新分配parts為下一個:(parts, *words) = [4, "lorem", "ipsum", "dolor", "sit", "amet"]
parts = int(parts)但我不喜歡連續兩次重復賦值變量。由于 python 是一種保持簡潔的語言,因此我正在尋找解決方案。*編輯:讓我知道連續兩次重新分配是否有效。
2 回答

BIG陽
TA貢獻1859條經驗 獲得超6個贊
在 Python 的靜態類型注釋中,list
s(以及除tuple
s 之外的所有序列)被假定為同類類型(它可能仍然是多種類型的聯合,但它不是不同的單一類型,具體取決于您正在查看的索引) . 您通過讓索引具有一種類型而其他索引具有不同類型來list
違反該假設。0
盡管 Python 通常不會強制執行 的“預期”用法list
,但類型檢查器會執行,并且沒有任何機制可以解決手動強制轉換或類型轉換的問題,就像您在此處所做的那樣。
簡短回答:你在“濫用” list
s,typing
當你這樣做時不會幫助你。因此,要么忽略/禁用此代碼的類型檢查器(畢竟它會工作得很好),要么忍受毫無意義的轉換。

慕森王
TA貢獻1777條經驗 獲得超3個贊
這個怎么樣?它測試每個項目的類型,并根據需要將其放入適當的列表中。
data = [4, "lorem", "ipsum", "dolor", "sit", "amet"]
parts = []
words = []
[parts.append(item) if type(item) == int else words.append(item) for item in data]
添加回答
舉報
0/150
提交
取消