我想知道Python是否具有在for循环中将数据存储在默认变量中的概念。
例如,在perl中,等价物如下
foreach (@some_array) {
print $_
}
谢谢, 德里克
答案 0 :(得分:15)
没有。你应该使用
for each in some_array:
print each
答案 1 :(得分:2)
只是为了好玩,这里的东西可以满足您的需求。默认情况下,它将循环变量绑定到名称“_each”,但您可以通过向其提供var
关键字参数来自行选择覆盖它。
import inspect
class foreach(object):
__OBJ_NAME = '_foreach'
__DEF_VAR = '_each'
def __init__(self, iterable, var=__DEF_VAR):
self.var = var
f_locals = inspect.currentframe().f_back.f_locals
if self.var not in f_locals: # inital call
self.iterable = iter(iterable)
f_locals[self.__OBJ_NAME] = self
f_locals[self.var] = self.iterable
else:
obj = f_locals[self.__OBJ_NAME]
self.iterable = obj.each = obj.iterable
def __nonzero__(self):
f_locals = inspect.currentframe().f_back.f_locals
try:
f_locals[self.var] = self.iterable.next()
return True
except StopIteration:
# finished - clean up
del f_locals[self.var]
del f_locals[self.__OBJ_NAME]
return False
some_array = [10,2,4]
while foreach(some_array):
print _each
print
while foreach("You can do (almost) anything in Python".split(), var='word'):
print word
答案 2 :(得分:1)
Python允许使用'_'变量(引用我的)。在程序中使用它似乎是Pythonic方法,可以在循环中忽略循环控制变量(请参阅其他问题,例如Is it possible to implement a Python for range loop without an iterator variable?或我的Pythonic way to ignore for loop control variable)。正如评论所指出的,这与Perl的默认变量不同,但它允许您执行以下操作:
some_list = [1, 2, 3]
for _ in some_list:
print _
一位大师可能会纠正我,但我认为这与您正在寻找的内容非常接近。
答案 3 :(得分:0)
for循环语法中使用的内容变为迭代中的项目针对循环的其余部分存储的变量。
for item in things:
print item
或
for googleplexme in items:
print googleplexme
语法如下所示
for <given variable> in <iterable>:
意味着给定变量可以是您在命名空间中喜欢的任何内容,并且可迭代可以是可迭代的源。