簡體   English   中英

返回Python函數中的變量輸出?

[英]return variable outputs in Python function?

我有一個返回列表的函數。 當我知道列表中的元素數量時,我可以執行以下操作:

x,y,z=foo()

但是,列表中的元素數量可以變化。 我想做類似的事情

x,y*=foo()

其中x將包含返回列表中的第一個元素,而y *將包含其余元素的其余部分。 顯然,Python不支持此語法。 這有什么哲學原因嗎? 我在想這個錯誤的方式嗎?

提前致謝。

您的語法沒有哲學上的異議,實際上,Python 3.1支持該語法:

>>> a, *b = range(10)
>>> a
0
>>> b
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> # Or even more flexibly:
>>> a, *b, c = range(10)
>>> a
0
>>> b
[1, 2, 3, 4, 5, 6, 7, 8]
>>> c
9
>>>

像這樣

results = foo()
x= results[0]
y= results[1:]

或更改您的函數以返回兩個元組

def foo():
    ....
    return someList[0], someList[1:]

稍微概括的方法:

>>> def unpack(seq, count):
...   return seq[:count] + [seq[count:]]
>>> a, b = unpack([1, 2, 3], 1)
>>> a
1
>>> b
[2, 3]
>>> a, b = unpack([1, 2], 1)
>>> a
1
>>> b
[2]
>>> a, b = unpack([1], 1)
>>> a
1
>>> b
[]
>>> a, b = unpack([], 1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
>>> a, b, c, d = unpack(range(10), 3)
>>> a
0
>>> b
1
>>> c
2
>>> d
[3, 4, 5, 6, 7, 8, 9]

您需要做的就是返回列表

例如return [...]

然后,您會收到列表並找到其長度,例如abc = f(.....)

len(abc)將為您提供列表中元素的數量

對於abc中的iiabc:將允許您訪問每個元素

暫無
暫無

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

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