如果我想要for i in range(10): x+= 1
显然无效,因为x
未定义,我必须声明x
,例如在尝试写入之前x=0
,但现在我有两行,一行用于声明x=0
,另一行用于实际写入我想要的数据x
(for i in range(10): x+= 1
)。
我想知道,有没有办法在一行中做到这一点?或者更具体地说,将x
声明为for循环的结果?
x = for i in range(10): x+= 1
的某些内容?
这甚至是可能的,还是我问一个无意义的问题?
答案 0 :(得分:3)
没有for
声明。
但是,您可以使用类似的构造,例如列表推导表达式或生成器表达式:
x = sum(i for i in range(10))
这相当于只说
x = sum(range(10))
编辑:正如Dougal正确指出的那样,在你的例子中你增加1,所以等价是
x = sum(1 for i in range(10))
又与x = len(range(10))
或x = 10
相同。
答案 1 :(得分:0)
在大多数情况下,我想你只想用x
作为循环变量:
for x in range(10): pass#or range(1,11)
enumerate
也会达到与你所描述的相似的效果,假设你想要一个不同的变量作为循环变量,以便在循环中做其他事情:
e.g。
for i,x in enumerate(range(x_start,x_end+1)):
#do something