2013-05-21 47 views

回答

5

當您返回多個值時,您所做的只是構建包含這些值的單個元組,並將其返回。你可以構造元組的任何東西,和一個列表來下什麼:

def funcOne(): 
    a, b, some_list = funcTwo() 
    print a, b, some_list 

def funcTwo(): 
    ... 
    some_list = [...] 
    return x, y, some_list 

如果你的意思是你想從列表中返回的值,你可以做到這一點剛剛返回列表,列表拆包作品太:

def funcOne(): 
    a, b, = funcTwo() 
    print a, b 

def funcTwo(): 
    ... 
    some_list = [x, y] 
    return some_list 

或者,如果你想從一個列表中的所有值,延長的返回值,你只需要連接你希望有額外的值的列表返回值的列表:

def funcOne(): 
    a, b, c, d = funcTwo() 
    print a, b, c, d 

def funcTwo(): 
    ... 
    some_list = [z, w] 
    return [x, y] + some_list 
+0

太棒了。感謝所有,但這真的清除了事情 – user2395759

1
>>> def list_and_vars(): 
    a, b = "fee", "fi" 
    c = ["fo", "fum"] 
    return a, b, c 

>>> print list_and_vars() 
('fee', 'fi', ['fo', 'fum']) 
>>> a, b, [c, d] = list_and_vars() 
>>> a, b, c, d 
('fee', 'fi', 'fo', 'fum') 
1
def funcOne(): 
    f2x,f2y = funcTwo() #tuple unpacking var1,var2 = (val1,val2) 
    print a,b,list((lf2x,f2y)) #convert tuple to list 

def funcTwo(): 
    return x, y #actually returns (x,y) 

如果我們看一下下面的

def funcTwo(): 
    return 'a','b' 
print(funcTwo()) 

我們可以看到,funcTwo返回元組'a','b'

>>> 
('a', 'b') 

這樣Python不只會返回一個值,但是它的元組拆包會使它看起來像這樣:

var1,var2 = funcTwo() 
print(var1) 
print(var2) 
>>> 
a 
b 

可以明確地返回一個列表:

def funcTwo(): 
    return ['a','b'] 
print(funcTwo()) 

在這種情況下,你仍然返回一個值,它只是一個列表。例如:

def funcTwo(): 
    return ['a','b'] 
def funcOne(): 
    return 'c','d',funcTwo() 
print(funcOne()) 

將打印

>>> 
('c', 'd', ['a', 'b']) 

同樣的,你可以看到,我們只返回一個,其中包括我們想返回所有值的元組。

如果你想簡單地打印東西funcOne除非你使用的字符串格式,如果你有,你會得到同樣的結果print -ed的返回值,因爲print('a','b','c')打印('a','b','c')但是你可以這樣做:

def funcOne(): 
    print(','.join(['c','d',funcTwo().__repr__()])) 
>>> 
c,d,['a', 'b'] 
相關問題