Python Sequence of Numbers

旧城冷巷雨未停 提交于 2020-12-30 09:30:13

问题


I've decided not to waste my summer and start learning python. I figured I'd start learning looping techniques so I wanted to start with a basic list of numbers, aka, write a for loop that will generate the numbers 1 - 10.

This is what I have:

def generateNumber(num):
    i=0 
for i in range(num):
    return i
return i

and the code doesn't work. I want to get an output in a list like this:

>>> generateNumber(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

回答1:


Trying to be consistent with what you first tried, you could do something like this

def generateNumber(num):
    mylist = []
    for i in range(num+1):
         mylist.append(i)
    return mylist


x = generateNumber(10)

but, you could, instead just say,

x = range(10+1)  # gives a generator that will make a list

or

x = list(range(10+1))  # if you want a real list

In general though, you should keep this list based on inputting the number 10 so it is [0...9] and not [0...10].




回答2:


It might help to implement this with the ability to specify a range:

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)

This can also be done with the built-in range function:

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]

More about range: http://docs.python.org/2/library/functions.html#range




回答3:


The range function already does what you are setting out to do.

If you're in Python 2, range(10) returns 0 through 9, or in Python 3 it's list(range(10)).




回答4:


By default, range(n) produces list of numbers [0, 1, ..., n-1].

If you want a list of numbers from a to b inclusive, you should call:

range(a, b + 1)

Which in your case is:

range(1, 11)



回答5:


Easiest way to generate numbers is by using range function

The range() function has two sets of parameters, as follows:

range(stop)

> stop: Number of integers (whole numbers) to generate, starting from
> zero. eg. range(3) == [0, 1, 2].

range([start], stop[, step])

> start: Starting number of the sequence.
> stop: Generate numbers up to, but not including this number.
> step: Difference between each number in the sequence.

Note that:

  • All parameters must be integers.
  • All parameters can be positive or negative.
  • range() (and Python in general) is 0-index based, meaning list indexes start at 0, not 1. eg. The syntax to access the first element of a list is mylist[0]. Therefore the last integer generated by range() is up to, but not including, stop. For example range(0, 5) generates integers from 0 up to, but not including, 5.

e.g.

Print 0 to 9

[user@linux ~]~ python -c "print list(range(10))" 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[user@linux ~]~ 

Print 1 to 9

[user@linux ~]~ python -c "print list(range(1,10))"
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[user@linux ~]~ 

Print 1 to 10

[user@linux ~]~ python -c "print list(range(1,11))"
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[user@linux ~]~ 

Reference: https://www.pythoncentral.io/pythons-range-function-explained/




回答6:


You probably want to create a list in your function, use the yield keyword, or use the built in list function.

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)


来源:https://stackoverflow.com/questions/17175809/python-sequence-of-numbers

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!