2013-06-18 3 views
2

Я решил не тратить свой симмер и начинать изучать питон. Я полагал, что я хотел бы начать изучение циклических методов, поэтому я хотел бы начать с основным списком чисел, иначе, написать цикл, который будет генерировать число 1 - 10.Python Последовательность чисел

Это то, что у меня есть:

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] 

ответ

1

Пытаюсь быть последовательным с тем, что вы сначала пытались, вы могли бы сделать что-то вроде этого

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].

+0

Вы можете вернуть что-то из вашей функции :) –

+0

Ваши два примера Python3 конкретные – TankorSmash

+0

@TankorSmash Er ... какая часть? –

1

Функция range уже делает то, что вы настраиваете.

Если вы находитесь в Python 2, range(10) возвращает 0-9, или в Python 3 это list(range(10)).

1

По умолчанию диапазон (n) создает список чисел [0, 1, ..., n-1].

Если вы хотите получить список номеров от а до Ь включительно, вы должны позвонить:

range(a, b + 1) 

Что в вашем случае:

range(1, 11) 
0

Вы, вероятно, хотите, чтобы создать список в вашем используйте ключевое слово 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) 
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(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

+0

Почему '[x for x in xrange (low, high + 1)]' вместо просто 'range (low, high + 1)' или 'list (xrange (low, high + 1))'? – tom10

+0

Просто обновлено, спасибо. Не было причин использовать список comp. Функция диапазона намного быстрее сама по себе - она ​​очень оптимизирована для такого типа использования. – codeprogress

1

Самый простой способ генерации чисел - использовать функцию range

range() функция имеет два набора параметров, а именно:

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. 

Обратите внимание, что:

  • Все параметры должны быть целыми.
  • Все параметры могут быть положительными или отрицательными.
  • range() (и Python в целом) основан на 0 индексах, то есть индексы списка начинаются с 0, а не 1. например. Синтаксис доступа к первому элементу списка - mylist [0]. Поэтому последнее целое число, сгенерированное диапазоном(), заканчивается, но не включает, останавливается. Например, диапазон (0, 5) генерирует целые числа от 0 до, но не включая, 5.

например.

печати от 0 до 9

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

печати от 1 до 9

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

печати от 1 до 10

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

Ссылка: https://www.pythoncentral.io/pythons-range-function-explained/

Смежные вопросы