который является индикатором в Python, что он выполняет операцию на месте. Итак, чтобы распечатать отсортированный список, достаточно сделать:

от вопрос уже есть ответ здесь:

Почему «.sort ()» заставляет список быть «Нет» в Python? 8 ответов

У моей программы на Python есть небольшая проблема. Дело в том, что я пытаюсь использоватьmyarray.append() к моему массиву, но в оболочке python, это говорит мне об этом, когда я делаю тест, добавляющийся в оболочку python:

>> l.append('1') # l is already defined

Traceback (most recent call last):

  File "<pyshell#1>", line 1, in <module>

    l.append('1')

AttributeError: 'NoneType' object has no attribute 'append'
>>

Я очень смущен этой проблемой, но в любом случае, я позволю вам увидеть код:

l=[] #*
i=1
while True:
  if 3*i<1000:
    l.append(str(i)) #*
  else:
    break
  i+=1
l=l.sort()
print l

* Я считаю, что вот основные факторы проблемы

Я мог бы просто сойти с ума и не осознавать, но если вы можете помочь, пожалуйста, сделайте.

Постскриптум Когда я запускаю программу, наprint lэто просто выводNone

 user176775429 нояб. 2017 г., 03:34
Ваш код не работает, как есть, это закончится в бесконечном циклеi+=1 вне времени ...

Ответы на вопрос(2)

Ваша проблема в

l = l.sort()

Метод sort () сортирует список на месте; сам список переупорядочивается, а не возвращается новый список. Метод возвращает None, который вы затем присваиваетеl, Так что вам просто нужно удалить назначение.

Альтернативой является использование

l = sorted(l)

который фактически сделает копию оригинального списка с элементами в отсортированном порядке.

 Supercolbat29 нояб. 2017 г., 03:38
@SimonBowly Так что есть способ не повторять это?
 Simon Bowly29 нояб. 2017 г., 03:41
@ Supercoolbat Я предположил, что это просто проблема копирования-вставки, в противном случае вы бы спросили, почему программа никогда не прекращается! Твойi=i+1 оператор должен находиться внутри цикла while, но вне if / else. Вы отступили на 2 пробела слишком далеко.
 Scott Hunter29 нояб. 2017 г., 03:36
За исключением того, что это утверждение никогда не достигается, по крайней мере в представленном коде.
 ShadowRanger29 нояб. 2017 г., 03:39
@ScottHunter: в представленном коде это бесконечный цикл; Я подозреваю, что есть серьезные ошибки в отступах, либо в исходном коде, либо в плохом задании копирования / вставки.
 Supercolbat29 нояб. 2017 г., 03:39
@ShadowRanger - плохая работа по копированию / вставке ... извините

В Python вы можете заполнить список следующим образомlist comprehension

l = [str(i) for i in range(0, 1000)]
l > ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ..]

Если вы используетеsort в списке возвращаетсяNone который является индикатором в Python, что он выполняет операцию на месте. Итак, чтобы распечатать отсортированный список, достаточно сделать:

l.sort()
print(l)

Ваш ответ на вопрос