добавьте два списка, затем sort = None (?)

Второй список объединяет каждый элемент в списке, xs. Запустив код ниже, python дает мне «None»

xs = [12, 10, 32, 3, 66, 17, 42, 99, 20] a = [b**2 for b in xs] c = (a + xs).sort() print(c, end=', ') 

Тот же список, но другой код –

 xs = [12, 10, 32, 3, 66, 17, 42, 99, 20] a = [b**2 for b in xs] c = a + xs c.sort() print(c, end=', ') 

… python дает мне мой список (c), все отсортированы. Я не понимаю. Или есть ли более питонический способ сделать это?

Благодаря!

Вообще говоря, все, что работает на чем то на месте, будет возвращать None , по соглашению. (Однако это соглашение необязательно всегда somelist.sort() ). somelist.sort() сортирует список на месте.

Если вы предпочитаете отсортированную копию , вы можете просто вызвать c = sorted(a + xs) . sorted работает с копией оригинала и, следовательно, возвращает копию.

Здесь есть более подробное объяснение: http://wiki.python.org/moin/HowTo/Sorting/

Вы используете выражения генератора и itertools для уменьшения объема временного хранилища, подобного этому

 >>> import itertools >>> xs = [12, 10, 32, 3, 66, 17, 42, 99, 20] >>> a = (b**2 for b in xs) >>> c = sorted(itertools.chain(a, xs)) >>> c [3, 9, 10, 12, 17, 20, 32, 42, 66, 99, 100, 144, 289, 400, 1024, 1764, 4356, 9801]