【问题标题】:Adding numbers in a loop python在循环python中添加数字
【发布时间】:2014-04-02 15:37:44
【问题描述】:

这是我的难题。想象一下,您在 python 中有一个循环和一个包含 100 个成员的列表,如下所示:

myList=range(100)

for i in range(100):
    print(myList[i]) 
    print(myList[i+5])
    print(myList[i-5])

如何防止 myList 的索引超过列表长度或低于 0?

例如,如果循环中的索引是 99,那么:

print(myList[i+5])

会返回一个索引错误。

为了澄清,我的意思是我可以找出什么 [i+5] 就好像列表在循环中一样。

因此,如果您(再次)想象索引是 99,我想转到第 4 个索引(在添加 5 并循环回到开头之后)。

【问题讨论】:

  • 5 开始,在长度 - 5 之前结束?
  • 我应该更清楚地说明这一点。我将其用于将最后一个像素与起始像素循环的游戏,因此我希望能够将索引移动到列表末尾并从重新开始。

标签: python for-loop indexing


【解决方案1】:

直接的方法是从 5 开始并在列表的长度处结束 - 5,像这样

for i in range(5, len(myList) - 5):
    print(myList[i]) 
    print(myList[i+5])
    print(myList[i-5])

或者您可以在访问该位置的元素之前确保索引有效,如下所示

for i in range(100):
    print(myList[i])
    if i + 5 < len(myList):
        print(myList[i+5])
    if i - 5 >= 0:
        print(myList[i-5])

编辑:如果你喜欢环绕并从另一端开始,一旦你到达终点,那么你可以使用模运算符,像这样

for i in range(100):
    print(myList[i])
    print(myList[(i + 5) % len(myList)])
    print(myList[(i - 5) % len(myList)])

【讨论】:

  • 谢谢。正是我需要的。
  • @user2592835 酷:) 如果你觉得我的回答对你有帮助,你可以Accept my Answer
【解决方案2】:

您还可以定义一个“安全”print 函数:

编辑:在您澄清后,我将答案修改为循环

def safe_print(mylist, myindex):
    print mylist[myindex % len(mylist)]

myList=range(100)

for i in range(100):
    safe_print(myList, i)
    safe_print(myList, i+5)
    safe_print(myList, i-5)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    相关资源
    最近更新 更多