Заменить только нули на целые числа в списке чисел - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть этот вывод из моего кода

[0.0, 0.0, 0.25, 0.5, 1.0],

, но мне нужно, чтобы это было так -

[0, 0, 0.25, 0.5, 1.0]

Любые советы о том, как заменить нули на целые числа?

Ответы [ 3 ]

0 голосов
/ 23 ноября 2018

Если вы хотите изменить все нули на целые числа, подойдет простое понимание списка.

>>> lst = [0.0, 0.0, 0.25, 0.5, 1.0]
>>> [x or 0 for x in lst]
[0, 0, 0.25, 0.5, 1.0]

Если и только если x == 0, тогда выражение будет оценено как 0.

Это предполагает, что никакие другие ложные значения, такие как пустые строки или списки, не находятся в lst.

0 голосов
/ 23 ноября 2018

Вы можете просто сделать это с помощью списка понимания :

Пример:

Если я хочу, чтобы все числа, которые меньше 3 длябыть целыми числами и остаток с плавающей точкой , тогда я бы сделал так:

myList = [1.1 , 2.7 , 7.8 ,8 ,8.9 ,3.2]
myList = [ int(i) if i < 3 else i for i in myList ]
print(myList)

Вывод:

[1, 2, 7.8, 8, 8.9, 3.2]

Ваш необходимый код:

 myList = [0.0, 0.0, 0.25, 0.5, 1.0]
 myList = [int(i) if i == 0 else i for i in myList]
 print(myList)
0 голосов
/ 23 ноября 2018

Это немного странный запрос, но вы можете просто выполнить его в каждом конкретном случае, превратив все нули в int s:

>>> output = [0.0, 0.0, 0.25, 0.5, 1.0]
>>> [int(x) if not x else x for x in output]
[0, 0, 0.25, 0.5, 1.0]

Это понимание списка такое же, как

new_list=[]
for x in output:
    if x == 0:
        new_list.append(int(x))
    else:
        new_list.append(x)

Форма for -loop проще для создания более сложных правил замены, если вам нужно настроить ее.

...