Редактирование списка с использованием цикла for - PullRequest
0 голосов
/ 08 октября 2019

Я хочу изменить все числа в этом списке так, чтобы он добавил 1,5 ко всему, что меньше 0, пока они не будут больше 0, однако я не понимаю, почему это выдает очень странный вывод ([1, 1, 1, 1, -3,5, -2,5, -4, -5, 0,5])


for i in y:
    if i<0:
        y[i] = i+1.5

print (y)

Ответы [ 5 ]

1 голос
/ 08 октября 2019

Вы можете использовать по модулю:

for i, n in enumerate(y):
    if n < 0:
        y[i] %= 1.5
1 голос
/ 08 октября 2019

Вы смешивали индексы и элементы списка. И вам нужно было некоторое время вместо «если», чтобы продолжить, пока не достигнете нужного числа.

Попробуйте что-то вроде этого:

for i in range(len(y)):
    while y[i] < 0:
        y[i]+=1.5
0 голосов
/ 08 октября 2019
for i in range(len(your_list)):
    if your_list[i] < 0:
    your_list[i] += 1.5
print(your_list)
0 голосов
/ 08 октября 2019

Вот еще одно решение, использующее этот метод :

>>> x = [1, 1, 1, 1, -3.5, -2.5, -4, -5, -0.5]
>>> x = [i if i>0 else ((i%-1.5)+1.5) for i in x]
>>> print(x)
[1, 1, 1, 1, 1.0, 0.5, 0.5, 1.0, 1.0]
0 голосов
/ 08 октября 2019

Python выполняет итерацию по значению по умолчанию. Чтобы выполнить итерацию по индексу, вы должны составить список индексов и пройти через , что . Вы делаете это с помощью встроенного range():

for i in range(len(y)):
    while y[i] < 0:
        y[i] += 1.5
print(y)
...