簡體   English   中英

從 function 返回列表的元素

[英]To return elements of a list from a function

我想定義一個 function ,它將一個列表作為其參數,然后按順序返回元素。

例如:

def iterator(lis):
    for e in range(len(lis)):
        return lis[e]

l=input("Enter list elements:").split()
x=iterator(l)
print(x)

但這只是將列表的第一個值返回為:

Enter list elements:12 23 34
12

如何打印連續行中的所有值?

你可以使用 yield 來構建一個生成器,這里是關於生成器的官方文檔

Python 中的生成器是什么?

一個 Python 生成器是一個 function 通過調用 yield 返回一個生成器迭代器(只是一個 object 我們可以迭代)。 yield 可以用一個值調用,在這種情況下,該值被視為“生成的”值。

我也想分享一個例子,請務必閱讀評論:

def iterator(lis):
    for e in range(len(lis)):
        yield lis[e]

l=input("Enter list elements:").split()

# A generator returns an Iterable so you should
# loop to print
for number in iterator(l):
    print(number)

# Or use list
result = list(iterator(l))
print(result)

Output
1
2
3
['1', '2', '3']

您可能想要yield ,因為return會導致 function 調用立即結束。 但是yield只是產生另一個迭代器; 您仍然需要遍歷結果以將它們全部打印出來,而不是簡單地打印迭代器本身。

def iterator(lis):
    for e in range(len(lis)):
        yield lis[e]

...
for element in x:
    print(element)

當然,您幾乎只是在此處重新實現現有的列表迭代器; 一個等效的定義是

def iterator(lis):
    yield from lis

你可能想要的是做類似的事情

x = '\n'.join(l)
print(x)

它通過迭代l並使用\n連接元素來創建一個字符串。 然后可以打印生成的多行字符串。

如果您確實return ,它將只打印一個元素

def iterator(lis):
    for e in range(len(lis)):
        return lis[e]
l=input("Enter list elements:").split()
x=iterator(l)
for y in x: print(y)

使用: def iterator(list): for e in range(len(list)): a= list[e] print(a) l=a,b,c=input().split() a=iterator(l)

利用:

[print(i) for i in input("Enter list elements:").split(" ")]

return導致 function 在到達語句后停止。 所以你的 for 循環只運行一次。

您可以使用其他答案中提到的 yield ,但我真的認為在這種情況下您不需要 function 。 因為 function 只是要返回它作為參數的列表。 你應該做的是這樣的:

i = input("Enter list elements: ").split()
for x in i:
   print(x)

就是這么簡單。

def iterator(lis):
    for e in range(len(lis)):
        print( lis[e])

l=input("Enter list elements:").split()
iterator(l)

如果您想對列表中的每個項目進行一些操作,那么您應該在 function 中容納這些操作。

使用 print 而不是 return 會給你預期的 output .. 試一次

暫無
暫無

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

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