for循环包含或在python中独占

时间:2018-04-30 20:11:47

标签: python

当我运行以下代码时,它会打印出来。但是,我只期望一个而不是两个。

for i in (1,1):
    print(i)

输出

1    
1

3 个答案:

答案 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循环是唯一的。