2014-11-17 1 views
0
ls=[1,2,3,4,5,6,7,8,9,10] 
for i in ls: 
    if(i%2!=0): 
     i=i+1 
     print i 

Я получаю ответ отдельно, как 2,4,6,8,10. Я не получаю помощь list.please? Я новичок в python.I не знаю много о пакетах, и я использую python 2.7.1.Распечатать список после обновления 1 до нечетных элементов в python?

любое другое ключевое слово или иной метод, кроме добавления? Спасибо

+0

Я не на 100% прояснил вашу цель, но я вижу, что вы печатаете отдельные цифры. Чтобы распечатать список, вы должны добавить эти числа в список, а затем распечатать его. –

ответ

1

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

Если вы хотите напечатать только нечетные элементы из списка, вы должны создать пустой список и добавить к нему в вашем цикле:

new_list = [] 

for i in ls: 
    if(i % 2 == 1): 
     new_list.append(i + 1) 

print new_list 

Или вы могли бы использовать список понимание как так:

print [i + 1 for i in ls if i % 2 != 0] 

Обратите внимание, что если вы хотите на самом деле изменить ls, то, как вы это делаете, не будет работать. i является копией значения в данной задаче в ls, а также модификация i ничего не изменит в пределах ls. Если вы хотите, чтобы на самом деле изменить значения ls в цикле:

for i in range(len(ls)): 
    if ls[i] % 2 == 1: 
     ls[i] += 1 

или с условным выражением:

ls = [i + 1 if i % 2 == 1 else i for i in ls] 
1
ls=[1,2,3,4,5,6,7,8,9,10] 
result = [] 
for i in ls: 
    if(i%2!=0): 
     i=i+1 

    result.append(i) 
print result 
+0

Thankyou за вашу помощь –

1

Ваш цикл буквально просто распечатав каждый номер один в время. Ни в коем случае вы не создаете список. У вас есть варианты.

Вы можете использовать список понимание:

ls = [1,2,3,4,5,6,7,8,9,10] 

yourlist = [i + 1 for i in ls if i % 2 != 0] 

>>> print yourlist 
[2, 4, 6, 8, 10] 

list comprehension tutorial

Или с цикл для того же результата:

result = [] 

for i in ls: 
    if i % 2 != 0: 
     result.append(i + 1) 
1

Чтобы действительно изменить список, используйте:

ls=[1,2,3,4,5,6,7,8,9,10] 
for i, num in enumerate(ls): 
    if num % 2 != 0: 
     ls[i] += 1 
print ls 

Обратите внимание, что для обновления списка вы должны его проиндексировать: ls[i] (индексы Python начинаются с 0). Встроенная функция enumerate() возвращает каждый индекс и соответствующий элемент из списка по очереди.

+0

Он использует python 2.x - смотрите инструкцию печати. – furkle

+0

Справедливо ... отредактировал (хотя он все равно будет работать). – xnx

+0

Также справедливая точка - либо она обновлена, либо моя память плохая, но я мог бы присягнуть 'print()' выбросил исключение в 2.x. – furkle