使用';和';Python中For循环中的运算符

使用';和';Python中For循环中的运算符,python,for-loop,typeerror,Python,For Loop,Typeerror,所以我有点好奇为什么这不起作用 为什么代码是这样的: for a in range(10) and b in range(10): print a + b for a,b in range(10): print a + b 生成一个表示“b未定义”的错误 另外,代码如下: for a in range(10) and b in range(10): print a + b for a,b in range(10): print a + b 生成错误:“int对象不可编辑”

所以我有点好奇为什么这不起作用

为什么代码是这样的:

for a in range(10) and b in range(10):
  print a + b
for a,b in range(10):
  print a + b
生成一个表示“b未定义”的错误

另外,代码如下:

for a in range(10) and b in range(10):
  print a + b
for a,b in range(10):
  print a + b
生成错误:“int对象不可编辑”

为什么??我事先还没有确定它们的值,所以Python怎么知道它们是int对象呢?另外,我知道你可以用while循环来代替,但是有没有什么方法可以执行我单独使用for循环所做的那种操作呢

for a,b in zip(range(10),range(10)):
    print a + b
应该很有用。。。假设我正确理解了你的问题 如果没有,那么

for a in range(10):
    for b in range(10):
        print a+b

甚至
[a+b表示范围(10)中的a,b表示范围(10)]

for
循环中,一次只能迭代一个iterable,问题中的代码是无效的。我相信这正是您想要的-同时迭代两个范围:

zip
函数创建一个由两个元素元组组成的单一iterable,从每个范围中提取一个元素,然后我们可以将元组中的每个元素解压为单独的变量

编辑:

如果您试图将一个循环嵌套在另一个循环中,标准方法是:

for a in range(10):
    for b in range(10):
        print a + b
但是,我们可以通过使用达到相同的效果,这看起来更接近您最初的想法:

import itertools as it
for a, b in it.product(range(10), range(10)):
    print a + b

其他答案解释了正确的方法,但没有人解释你所做的有什么错

for a in range(10) and b in range(10):
  print a + b
这是一些直观语法的好主意,但Python不知道这一点。编程内容的优先级实际上是这样的:

for a in ((range(10)) and (b in range(10))):
Python认为您正在尝试创建一个复杂的表达式来生成一个要迭代的iterable。第一个错误发生在它尝试计算b以构建值时。如果定义了b,则范围(10)中的
b将导致
True
False
。与
范围(10)
相加的结果也将是布尔值。然后,您在尝试迭代布尔值时遇到另一个错误

for a,b in range(10):
  print a + b

如果右侧的枚举包含2元组元素,则这种语法有效。此for循环的第一步相当于尝试
a,b=0
。它试图通过迭代来“解包”右侧。但不能迭代单个整数。a和b尚未定义,但范围(10)的第一个元素为。这是您不能迭代的整数。

您希望
a
b
是什么?您的尝试被解析为
中的a(范围(10)和(范围(10)中的b))
b
必须定义,以便计算
表达式的第二部分。(第一部分,
范围(10)
,永远是正确的,因为它在Python 2中是一个非空列表,在Python 3中是一个
范围
对象。)非常感谢。我实际上想做的是Joran Beasley提出的,但我不知道zip函数。谢谢!@Liongold哦,我明白了:)无论如何,看看我编辑过的答案,你会在结尾找到一个不错的选择谢谢!我在寻找类似后一段代码的东西;为我提供了一个伟大的数字序列,我正试图用它来回答一个项目Euler问题。