2016-08-15 3 views
0

У меня есть список indexlist со значением:расширить питона не распространяющие правильно

[8, 11, 4, 3]

Это в середине функции, поэтому другие соответствующие значения i=0 и endsorted = sorted(indexlist[i+1:])

Тогда я называю

indexlist[:i+1].extend(endsorted)

который возвращает

[8, 11, 4, 3].

Не должен ли он возвращаться [8, 3, 4, 11]? Я проверил indexlist[:i+1], то есть [8], и я проверил endsorted, который является [3, 4, 11].

+1

Нет, это не нужно, потому что вы расширяете копию части списка (фрагмента), который вы нигде не сохраняете. Это не то, на что распространяется или нарезка. –

+0

То, что вы _can_ делаем, задает срез напрямую, например 'some_list [2: 3] = [2, 4, 6, 8]', хотя я все еще немного странный/трудночитаемый в большинстве контекстов, которые я могу себе представить. –

+0

вы правы, спасибо –

ответ

0

Посмотрите на этот код:

# Init 
indexlist = [8, 11, 4, 3] 

# Your setup 
i = 0 
endsorted = sorted(indexlist[i+1:]) 

# Extending the right list object 
new_index_list = indexlist[:i+1] 
new_index_list.extend(endsorted) 

Значение new_index_list является [8, 3, 4, 11].

Поскольку я продлил правильный объект, а не только его копия (При нарезке списка вы получите новый объект и не оригинал)

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