簡體   English   中英

列表理解與元組賦值

[英]List comprehension with tuple assignment

我想問一下python中是否可以這樣:

a,b = [i,i+1 for i in range(5)]

我知道這是不可能的,因為我有一個錯誤,但我想你明白我想要實現的目標。 讓我澄清一下,我能做到:

a,b = 3+2,3

編輯--->甚至更好:

a,b = [0,1,2,3,4],[1,2,3,4,5]

在我的第一個代碼示例中,我不是類似的東西。 我試圖將變量'a'和'b'分配為列表,使用列表理解,但使用元組作為賦值,重點是我不想使用它:

a = [i for in range(5)]
b = [i+1 for in range(5)]

我知道我可以使用這個: t = [(i,i+1) for i in range(5)] ,但那不是重點。
順便說一下這只是一個簡單的例子=>“i,i + 1”

編輯--->我想澄清一下我的問題。 如何使用列表推導在一行中分配多個變量(類型列表)?

當你運行這個:

a,b = [(i,i+1) for i in range(5)] # wrapped i, i+1 in parentheses (syntax error)

它列出了五個兩項元組,如下所示:

[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]

但是你試圖將這五個元組分配給兩個對象( ab

zip中使用參數解包(*),您可以將輸出“解壓縮”到每個元組的第一個和第二個元素:

a,b = zip(*[(i,i+1) for i in range(5)])

這是:

[(0, 1, 2, 3, 4), (1, 2, 3, 4, 5)]

並且可以像你寫的那樣分配到ab

不要試圖聰明。 這是完全可以接受的代碼:

>>> a = range(5)
>>> b = range(1,6)
>>> a, b
([0, 1, 2, 3, 4], [1, 2, 3, 4, 5])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM