Причина, по которой каждый элемент печатает на отдельной строке, заключается в том, что вы печатаете 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]
Я не на 100% прояснил вашу цель, но я вижу, что вы печатаете отдельные цифры. Чтобы распечатать список, вы должны добавить эти числа в список, а затем распечатать его. –