我的一个学生写了一个看起来像这样的代码(完全没有达到他的期望):
t = [1,2,3]
for t[1] in "abcd":
print("hello")
我之前从未见过,并且很确定它不会编译,但是确实可以编译t[1]
(即循环后t[1]
设置为d
)。
允许使用此语法有什么意义?有没有用例?对我而言,唯一“可接受的”语法应该是:
for <variable_name> in <iterable>:
...
其中<variable_name>
是标识符,没什么。
答案 0 :(得分:5)
此循环:
for x in range(5):
print(x)
可以翻译为:
iterator = iter(range(5))
while True:
try:
x = next(iterator)
except StopIteration:
break
print(x)
遵循相同的概念,此循环也将有效:
t = [1,2,3]
for t[1] in 'abcd':
print('hello')
t = [1,2,3]
iterator = iter('abcd')
while True:
try:
t[1] = next(iterator)
except StopIteration:
break
print('hello')
最终结果将是t == [1, 'd', 3]
答案 1 :(得分:0)
我认为Python将迭代语法解释为
for <container> in <iterable>:
...
并且t
是一个列表(也称为容器容器),t[1]
被Python解释为一个简单的容器,就像常规变量一样。