use*_*548 115 python foreach python-3.x
当我遇到这种情况时我可以用javascript来做,我总是认为如果有一个foreach
功能就会方便.通过foreach我的意思是下面描述的功能:
def foreach(fn,iterable):
for x in iterable:
fn(x)
Run Code Online (Sandbox Code Playgroud)
他们只是在每个元素上做它并且没有产生或返回一些东西,我认为它应该是一个内置函数,并且应该比用纯Python编写它更快,但我没有在列表中找到它,或者它只是叫另一个名字?或者我在这里错过了一些观点?
也许我错了,因为调用Python中的函数成本很高,对于这个例子来说绝对不是一个好习惯.该函数不应该是一个out循环,而应该在它的正文中执行循环,如下所示,在许多python的代码建议中已经提到过:
def fn(*args):
for x in args:
dosomething
Run Code Online (Sandbox Code Playgroud)
但我认为foreach仍然受到以下两个事实的欢迎:
Jo *_* By 145
我见过的每个"foreach"(PHP,C#,......)都与pythons"for"语句基本相同.
这些或多或少是等价的:
// PHP:
foreach ($array as $val) {
print($val);
}
// C#
foreach (String val in array) {
console.writeline(val);
}
// Python
for val in array:
print(val)
Run Code Online (Sandbox Code Playgroud)
所以,是的,python中有一个"foreach".它被称为"for".
您所描述的是"阵列图"功能.这可以通过python中的列表推导来完成:
names = ['tom', 'john', 'simon']
namesCapitalized = [capitalize(n) for n in names]
Run Code Online (Sandbox Code Playgroud)
Phi*_*oud 44
Python没有一个foreach
说法本身.它有for
内置于语言中的循环.
for element in iterable:
operate(element)
Run Code Online (Sandbox Code Playgroud)
如果你真的想,你可以定义自己的foreach
功能:
def foreach(function, iterable):
for element in iterable:
function(element)
Run Code Online (Sandbox Code Playgroud)
作为旁注,for element in iterable
语法来自ABC编程语言,这是Python的影响之一.
uin*_*tea 29
其他例子:
Python Foreach循环:
array = ['a', 'b']
for value in array:
print(value)
# a
# b
Run Code Online (Sandbox Code Playgroud)
Python For循环:
array = ['a', 'b']
for index in range(len(array)):
print("index: %s | value: %s" % (index, array[index]))
# index: 0 | value: a
# index: 1 | value: b
Run Code Online (Sandbox Code Playgroud)
jav*_*dba 15
正确的答案是“python 集合没有” foreach
。在本机Python中,我们需要诉诸外部for _element_ in _collection_
语法,这不是OP所追求的。
一般来说,Python 对于函数式编程来说相当薄弱。有一些库可以稍微缓解一下。我帮助创作了其中一篇infixpy
pip install infixpy
https://pypi.org/project/infixpy/
from infixpy import Seq
(Seq([1,2,3]).foreach(lambda x: print(x)))
1
2
3
Run Code Online (Sandbox Code Playgroud)
另请参阅: Python 3 中列表上的操作从左到右应用
map
在大多数情况下,对于问题中提到的情况是优选的.
例如
map(len, ['abcd','abc', 'a']) # 4 3 1
Run Code Online (Sandbox Code Playgroud)
对于带有多个参数的函数,可以为map提供更多参数:
map(pow, [2, 3], [4,2]) # 16 9
Run Code Online (Sandbox Code Playgroud)
它返回python 2.x中的列表和python 3中的迭代器
如果你的函数有多个参数,并且参数已经是元组的形式(或者自python 2.6以来的任何迭代)你可以使用itertools.starmap
.(它的语法与你想要的语法非常相似).它返回一个迭代器.
例如
for num in starmap(pow, [(2,3), (3,2)]):
print(num)
Run Code Online (Sandbox Code Playgroud)
给了我们8和9
小智 5
这在 python 3 中执行 foreach
test = [0,1,2,3,4,5,6,7,8,"test"]
for fetch in test:
print(fetch)
Run Code Online (Sandbox Code Playgroud)
这是在 Python 中同时访问元素索引的“foreach”构造示例:
for idx, val in enumerate([3, 4, 5]):
print (idx, val)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
355802 次 |
最近记录: |