【问题标题】:For loop syntax in Python without using range() or xrange()Python 中的 for 循环语法,不使用 range() 或 xrange()
【发布时间】:2016-02-18 23:27:37
【问题描述】:

我对 python 了解不多,所以如果我的问题是一个非常基本的问题,我深表歉意。

假设我有一个列表

lst = [1,2,3,4,5,6,7,8,9,10]

现在我想知道的是,是否有任何方法可以在不使用range()xrange() 的情况下在python 中编写以下代码:

for i in lst:
    for j in lst after element i: '''This is the line i want the syntax for'''
        #Do Something

第二个循环是访问元素i之后的元素,即如果i = 3,j必须从4循环到10,所以如果ij的数字对是打印将是 (1,2)..(1,10), (2,3)...(2,10), (3,4)..(3,10) 等等。

我不知道在任何搜索引擎上要搜索什么或输入什么查询。
任何帮助将不胜感激。

【问题讨论】:

  • Iterate over pairs in a list (circular fashion) in Python 的可能重复项。您要使用索引(0, 1), (1, 2), (2, 3)(0, 1), (2, 3), (4, 5) 进行迭代吗?
  • 还有你不想使用range的特殊原因吗?是为了挑战/好奇还是别的什么?
  • @SuperBiasedMan 这只是出于好奇而已。
  • @SuperBiasedMan 不,我想迭代 (0,1)...(0,10),然后 (1,2)...(1,10),然后 (2,3) )..(2,10),这种循环。
  • 啊,抱歉。该链接可能会有所帮助,但它不是重复的。

标签: python syntax


【解决方案1】:

您可能想使用enumerate()

for index, item in enumerate(lst):
    for j in lst[index+1:]:
        #Do Something

【讨论】:

  • lst[index+1] 不是一个列表,它是一个元素,此外,枚举不能这样工作
  • 另外,每次我尝试使用它时,enumerate 中的索引和项目的顺序都是错误的。这就像在第一次尝试时尝试插入 USB...
  • @turbulencetoo 这是否也意味着有时你得到了正确的顺序但它仍然不起作用所以你反射性地尝试另一种方式?
  • 我从您的回答中学到了一些新东西。我真的很感激!
【解决方案2】:

这就是列表切片的意义所在,您可以从第 i 个元素中取出列表的一部分

lst[i:]

此外,为了同时拥有索引和值,您需要enumerate 操作,它将列表更改为对列表(index, value)

因此

for ind, i in enumerate(lst):
    for j in lst[ind+1: ]: 
        #Do Something

【讨论】:

  • 感谢列表切片是我一直在寻找的答案!
猜你喜欢
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多