Python循环和附加数组

时间:2016-06-22 08:08:43

标签: python arrays dynamic-arrays

我正在创建一个应用程序来测试有多少步骤'使用colatz猜想,数字达到1。这是代码:

import sys
import csv

def findSteps(mode):
    count = 0
    while mode != 1:
        count = count + 1
        if mode%2 == 0:
            mode = mode/2
        else:
            mode = (3*mode)+1

    return count

numbers = []
counts = []

for n in range(1, 100):
    important = findSteps(n)
    numbers[n] = n
    counts[n] = important

with open('colatz conjecture table.csv', 'wb') as csvfile:
    myWriter = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
    myWriter.writerow(numbers)
    myWriter.writerow(counts)

不幸的是,每当我运行它时,它都会给我一个"索引错误:列表分配超出范围。"

2 个答案:

答案 0 :(得分:2)

list.append()变种外,您还可以使用

numbers = range(1, 100)
counts = [findSteps(n) for n in numbers]

或者,如果你想保持它的功能

numbers = range(1, 100)
counts = map(findSteps, numbers)

答案 1 :(得分:0)

numberscounts都有list类型,具体取决于您在代码中的定义方式。因此,您可以使用append的方法将数据添加到它们中。请记住,索引是从零开始的。 此外,我同意@Evert的评论,看起来dictionary对象更适合您的需求。