Member 14738587 Ответов: 3

Как удалить нулевые значения из списка в Python


Я хочу удалить нулевые значения из списка в python. Я пробовал некоторые коды, но он все еще показывает нулевые значения. Вот мой список.

In [128]: allData
Out[128]: 
[['Brand', 'Type', 'Release'],
 ['Nissan', 'seDan', '2010'],
 ['Hyundae', 'suv', '2011'],
 ['BMW', 'seDan', '2012'],
 ['Hyun dae', 'seDan', '2012'],
 ['BMW', 'suv', '2012'],
 ['BMW', 'suv', '0']]


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

Что я уже пробовал:

import csv
import os

fileToRead = "est1.csv"

f = open(fileToRead, 'r')
reader = csv.reader(f)
allData = list(reader)
totalCols = len(attributes)
totalRows = len(allData)
f.close()

# Add a '0' for each empty cell
for j in range(0,totalCols):
	for i in range(0,totalRows):
		if 0 == len(allData[i][j]):
			allData[i][j] = "0"
# Remove zero value
for j in range(0,totalCols):
	for i in range(0,totalRows):
		list(filter(lambda a: a !="0", allData[i]))

3 Ответов

Рейтинг:
22

Richard MacCutchan

Вы начинаете с замены 0 на "0" - что не обязательно. Во-вторых, ваш вызов фильтра не сохраняет результирующий список; попробуйте:

allData[i] = list(filter(lambda a: a !=0, allData[i]))


Member 14738587

Большое вам спасибо за вашу помощь. Это работает! Спасибо.

Рейтинг:
2

Member 14917910

Привет,
Я только что видел опубликованные решения.

Python известен своей способностью сжимать количество строк кода, и это, безусловно, то, как вы пишете код на C/C++ или java.

Вы можете использовать концепцию понимания списка - уникальную особенность python и очень популярную среди современных программистов python.

Давайте возьмем пример:

скажем, я определяю список

>>> a = [1,2,0,3,0,5,6,7,0,10]


Теперь, чтобы удалить все "0" в списке, просто используйте "понимание списка", т. е.

>>> [x for x in a if x !=0]
[1, 2, 3, 5, 6, 7, 10]
>>>


Круто, верно !!


Овации,
Джойдип


Рейтинг:
1

Member 14839628

а=[0,1,2,3,0,0,0,0,5,6,7,8,0,0]
ll=len(a)
i=0
в то время как я<ll:
if="" a[i]="=0:
"del="" a[i]
="" print(a)
="" будете="Лл-1
"i="0
" еще:
="" print(a)<="" code="">