2016-06-16 2 views
-2

Какая разница между для ш в словах [:] и ш в словах [] в Python

words = ['Hello','Python','Java'] 

for item in words: 
    if len(item) > 4: 
     words.insert(0,item) 

words = ['Hello','Python','Java'] 

for item in words[:]: 
    if len(item) > 4: 
     words.insert(0,item) 

The ① источник не может работать успешно. Но ② может успешно работать. В чем разница между источником. Можете ли вы сказать мне, почему?

+3

Ну, 'words []' недействителен Python. –

+0

Я не понимаю, о чем вы просите. 1 и 2 разные, а 1 - недействительный синтаксис, так почему бы вам даже спросить об этом? –

+0

Я уверен, что он имел в виду первый, который читал «для элемента в словах:« – Tom

ответ

0

Я работаю исходя из предположения, что вы имели в виду ваш первый, чтобы читать for item in words:.

words[:] делает копию слов в списке, а затем выполняет итерацию по этой копии. Затем ваш код изменяет исходный список.

Первый выполняет итерацию над исходным списком и одновременно изменяет список, поэтому он приводит к бесконечному циклу, в котором вы продолжаете добавлять в список, когда выполняете итерацию по нему.

+0

Да, я ошибаюсь. Как вы говорите, Первый для предмета в словах:. Большое вам спасибо! – ssspure

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