当我运行以下代码时,它会打印出来。但是,我只期望一个而不是两个。
for i in (1,1):
print(i)
输出
1
1
答案 0 :(得分:7)
您正在迭代一个包含两个值为1的元素的元组,因此它会打印1
两次。您的代码相当于:
list = [1, 1]
for item in list:
print(item)
如果您想循环range of numbers:
for i in range(1, 2):
print(i)
或者,如果您想在列表或元组中打印唯一的数字或值,将其转换为集合,它将自动删除重复项
newList = set(list)
for value in newList:
print(value)
答案 1 :(得分:2)
集合和元组不同。我怀疑你是在混淆他们。在一组:
for i in {1, 1}:
print(i)
1
关于元组:
for i in (1, 1):
print(i)
1 1
将集合视为数学中的集合,将元组视为更像序列 - 您可以在序列中进行冗余,但不能在集合中进行冗余。
在阅读@KeshavGarg的回答之后,我怀疑你认为Python中的(a,b)
意味着stuff in a through b
。正如您现在可能已经意识到的那样,情况并非如此 - 您需要range
才能获得该结果。有趣的是(我承认切向),我们在这里讨论的语法因语言而异。在MATLAB中,范围语法看起来更像我认为Python范围语法是:
>> for i=1:4
disp(i)
end
在Python中实现范围文字(la matlab)的There has been some discussion。这引入了各种有趣的新问题,您可以在上一句中链接的文档中阅读这些问题。
答案 2 :(得分:0)
For循环总是包含在Python中:它们总是遍历迭代器的所有元素(除break
等异常外)。您可能感到困惑的是range
语法。 range(1,1)
将创建一个包含一个元素的range
对象。在range
对象中不包括stop
参数的意义上,range
函数而不是for循环是唯一的。