2016-03-07 2 views

ответ

2

разбейте его в части. Прямо сейчас вы фактически проверяете число, равное 4, и увеличиваете его на 10, что отлично.

Вы сейчас не хватает двух ключевых компонентов:

  1. Создание нового списка и добавления к нему
  2. An else условие для всех остальных элементов, которые вы хотите.

Так, для первой части, начните с создания нового списка:

new_list = [] 

Итак, мы имеем:

a = [4,4,6,4,10] 
new_list = [] 

Затем вы хотите append в новый список:

for i in a: 
    if i == 4: 
     i = i + 10 
     new_list.append(i) 

Однако, теперь вам необходимо разместить е значения, которые вы не хотите, чтобы увеличить, это где вам нужно else условие:

Так что, если она не равна 4, просто добавьте значение как в новый список:

for i in a: 
    if i == 4: 
     i = i + 10 
     new_list.append(i) 
    else: 
     new_list.append(i) 

Это в значительной степени исправляет проблемы, возникшие в вашем коде.

Теперь одна небольшая корректировка, чтобы сделать, что эту линию:

i = i + 10 

Может быть переписано как: i += 10

Итак, в конце концов, мы имеем:

a = [4,4,6,4,10] 
new_list = [] 

for i in a: 
    if i == 4: 
     i += 10 
     new_list.append(i) 
    else: 
     new_list.append(i) 

Наконец, все это можно укоротить в одну строку следующим образом:

new_list = [i + 10 if i == 4 else i for i in a] 
+2

@BobH. не отправляйте спама людям, которые обращаются за помощью к другому вопросу. Если они заинтересованы в тегах, они увидят их на своем канале и прочтут. Если нет, они не будут. Спам не работает. Кроме того, здесь считается хорошей практикой [принять ответ] (http://meta.stackexchange.com/questions/5234), если ответ [обратился к вашей проблеме] (http://stackoverflow.com/help/someone-answers). Нажмите на галочку/галочку слева от ответа, повернув ее зеленым. – MattDMo

1

Это можно легко сделать с помощью списка понимания:

>>> a = [4,4,6,4,10] 
>>> b = [14 if x == 4 else x for x in a] 
>>> b 
[14, 14, 6, 14, 10] 

или альтернативно, ближе к исходному коду:

[i + 10 if i == 4 else i for i in a] 

Проблема с кодом является то, что линии

i = i + 10 

не изменяет значения списка. Все, что вы делаете, это rebind имя i до i + 10 - но тогда вы ничего не делаете с новым значением.

Традиционный способ, без списка понимания, будет выглядеть следующим образом:

>>> a = [4,4,6,4,10] 
>>> b = [] # empty result list 
>>> for item in a: 
...  if item == 4: 
...   b.append(14) # alternatively: b.append(item + 10)    
...  else: 
...   b.append(item) 
... 
>>> b 
[14, 14, 6, 14, 10] 
1
for idx in range(len(a)): 
    i = a[idx] 
    if i == 4: 
     i = i+10 
     a[idx] = i 
+0

Это именно то, что я искал. Благодаря! – Ted

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