相关疑难解决方法(0)

为什么在for循环中可以使用列表索引作为索引变量?

我有以下代码:

a = [0,1,2,3]

for a[-1] in a:
  print(a[-1])
Run Code Online (Sandbox Code Playgroud)

输出为:

0
1
2
2
Run Code Online (Sandbox Code Playgroud)

我对为什么列表索引可以用作for循环中的索引变量感到困惑。

python indexing for-loop

92
推荐指数
6
解决办法
4009
查看次数

for循环名称列表表达式是否合法?

在CPython 2.7.10和3.4.3以及PyPy 2.6.0(Python 2.7.9)中,在for循环中使用表达式(或它们的某些子集)作为名称列表显然是合法的.这是一个典型的for循环:

>>> for a in [1]: pass
...
>>> a
1
Run Code Online (Sandbox Code Playgroud)

但您也可以使用对象中的属性:

>>> class Obj(object): pass
...
>>> obj = Obj()
>>> for obj.b in [1]: pass
...
>>> obj.b
1
Run Code Online (Sandbox Code Playgroud)

你甚至可以使用表达式中的属性:

>>> for Obj().c in [1]: pass
...
Run Code Online (Sandbox Code Playgroud)

但并非所有表达式都可行:

>>> for (True and obj.d) in [1]: pass
...
  File "<stdin>", line 1
SyntaxError: can't assign to operator
Run Code Online (Sandbox Code Playgroud)

但只要属性在外面,他们就会这样做吗?

>>> for (True and obj).e in [1]: pass
...
>>> obj.e
1
Run Code Online (Sandbox Code Playgroud)

或者可以分配什么?

>>> for {}['f'] in [1]: …
Run Code Online (Sandbox Code Playgroud)

python language-lawyer

4
推荐指数
1
解决办法
141
查看次数

标签 统计

python ×2

for-loop ×1

indexing ×1

language-lawyer ×1