Python 循环和追加数组
Python looping and appending arrays
我正在创建一个应用程序来测试使用 colatz 猜想需要多少 'steps' 才能使数字达到 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)
不幸的是,每当我 运行 它时,它都会给我一个 "Index Error: List Assignment out of range."
numbers
和 counts
的类型都是 list
,具体取决于您在代码中定义它们的方式。所以可以用append
的方法给他们两个都加数据。请记住,索引是从零开始的。
此外,我同意@Evert 的评论,它看起来 dictionary
对象更适合您的需求。
除了 list.append()
变体,您还可以使用
numbers = range(1, 100)
counts = [findSteps(n) for n in numbers]
或者,如果您想保持它的功能
numbers = range(1, 100)
counts = map(findSteps, numbers)
我正在创建一个应用程序来测试使用 colatz 猜想需要多少 'steps' 才能使数字达到 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)
不幸的是,每当我 运行 它时,它都会给我一个 "Index Error: List Assignment out of range."
numbers
和 counts
的类型都是 list
,具体取决于您在代码中定义它们的方式。所以可以用append
的方法给他们两个都加数据。请记住,索引是从零开始的。
此外,我同意@Evert 的评论,它看起来 dictionary
对象更适合您的需求。
除了 list.append()
变体,您还可以使用
numbers = range(1, 100)
counts = [findSteps(n) for n in numbers]
或者,如果您想保持它的功能
numbers = range(1, 100)
counts = map(findSteps, numbers)