6

我决定不浪费我的暑假,开始学习 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]
4

5 回答 5

5

试图与你第一次尝试的一致,你可以做这样的事情

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...9] 而不是 [0...10]。

于 2013-06-18T18:08:41.013 回答
3

通过指定范围的能力来实现这一点可能会有所帮助:

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 函数来完成:

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

于 2013-06-18T19:09:00.573 回答
1

默认情况下,range(n) 生成数字列表 [0, 1, ..., n-1]。

如果你想要从 a 到 b 的数字列表,你应该调用:

range(a, b + 1)

在你的情况下是:

range(1, 11)
于 2013-06-18T18:11:46.323 回答
1

range功能已经完成了您打算做的事情。

如果您在 Python 2 中,range(10)则返回 0 到 9,或者在 Python 3 中返回list(range(10)).

于 2013-06-18T18:09:50.300 回答
0

你可能想在你的函数中创建一个列表,使用yield关键字,或者使用内置的列表函数。

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)
于 2013-06-18T18:13:52.153 回答