[英]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.