Найти - Пользователи
Полная версия: [[],[],[]] != True?
Начало » Python для новичков » [[],[],[]] != True?
1
vir
Замучался с вложенными списками :(

например а = [,,,] b = [,,]
списки намного больше, приходиться писать много for для обхода и сравнения, при чем много проверок, т.к. списки еще и разной длины получаются. Не подскажете метод работы с вложенными значениями?

Ну это я так, попутно ломаю голову. Главный вопрос из-за которого создал топик выглядит в сабже.

почему а = [,,,] считается не пустым?
тоже в цикле обходить и проверять пустое или нет?
просто казалось все так хорошо в питоне, пока с этими вложениями не встретился.. :(
sp3
можно рекурсией
наподобие этого
def chek(x):
if type(x) == type([]):
if x == []: return None
for y in x:
if chek(y):return 1
else:
return 1


print chek([[[],[],[]],])
print chek([[[],[[],[1111]],[]],])
Ferroman
False даёт только пустой список. [] - не пустой, а список содержащий список.
Используйте итераторы, генераторы и ленивые функции типа map, filter - это хорошо оптимизирует работу со списками.

PS. Хотите проверить на пустоту вложенных списков - используйте all([, , ])
o7412369815963
Ferroman
PS. Хотите проверить на пустоту вложенных списков - используйте all([, , ])
>>> all([[],[1],[]])
False
>>> any([[],[1],[]])
True
vir
Ferroman
False даёт только пустой список. [] - не пустой, а список содержащий список.
Используйте итераторы, генераторы и ленивые функции типа map, filter - это хорошо оптимизирует работу со списками.

PS. Хотите проверить на пустоту вложенных списков - используйте all([, , ])
Спасибо!
Я делал так
q = [q for q in myf if q != []]
if q != []:
буду пробовать использовать ваши советы.
bw
Вариант с any здесь самый лучший.
Хотя можно и так:
>>> bool(filter(None, []))
False
>>> bool(filter(None, [[], []]))
False
>>> bool(filter(None, [[], [1]]))
True
..bw
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB