我决定不浪费我的暑假,开始学习python。我想我应该开始学习循环技术,所以我想从一个基本的数字列表开始,也就是写一个for循环来生成数字1 - 10。
这是我的:
def generateNumber(num):
i=0
for i in range(num):
return i
return i
和代码不能工作。我想在列表中得到这样的输出:
>>> generateNumber(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
尝试与您第一次尝试的内容保持一致,您可以这样做
def generateNumber(num):
mylist = []
for i in range(num+1):
mylist.append(i)
return mylist
x = generateNumber(10)
但是,你可以直接写
x = range(10+1) # gives a generator that will make a list
或
x = list(range(10+1)) # if you want a real list
一般来说,你应该保持这个列表基于输入数字10,所以它是[0…][0…10].
使用指定范围的能力可能有助于实现这一点:
def generateNumber(low, high):
'''returns a list with integers between low and high inclusive
example: generateNumber(2,10) --> [2,3,4,5,6,7,8,9,10]
'''
return range(low, high+1)
这也可以通过内置范围函数来完成:
range(10) --> [0,1,2,3,4,5,6,7,8,9] #note the "off by one"
range(11) --> [0,1,2,3,4,5,6,7,8,9,10]
range(2,11) --> [2,3,4,5,6,7,8,9,10]
关于范围的更多信息:http://docs.python.org/2/library/functions.html#range
默认情况下,range(n)生成一个数字列表[0,1,…], n - 1]。
如果你想要一个从a到b的数字列表,你应该调用:
range(a, b + 1)
在你的例子中是:
range(1, 11)
range
函数已经做了你要做的事情。
如果你在Python 2中,range(10)
返回0到9,或者在Python 3中,它是list(range(10))
。
您可能希望在函数中创建一个列表,使用yield关键字,或者使用内置的list函数。
def generateNumberList(num):
myList = []
for i in range(num):
myList.append(i)
#Notice that your return the list you've created rather
#than each individaul integer
return myList
print generateNumberList(10)
def generateNumberList2(num):
for i in range(10):
yield i
for i in generateNumberList2(10):
print i
def generateNumberList3(num):
return list(range(num))
print generateNumberList3(10)