Подтвердить что ты не робот

Пересечение списка в Python

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

Я делаю следующее в python:

for x in values[:]:
    if len(x)==3:
        print x

'values' - это исходный список. Вызывает ли вышеуказанный код весь подсписчик с длиной, равной 3 для каждого значения x? Я хочу отображать подсписки, где length==3 только один раз.

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

Есть ли какие-либо настройки, которые мне нужно изменить в eclipse?

4b9b3361

Ответ 1

Попробуйте это,

x in mylist лучше и читабельнее, чем x in mylist[:], а ваш len(x) должен быть равен 3.

>>> mylist = [[1,2,3],[4,5,6,7],[8,9,10]]
>>> for x in mylist:
...      if len(x)==3:
...        print x
...
[1, 2, 3]
[8, 9, 10]

или если вам нужно больше использования pythonic list-comprehensions

>>> [x for x in mylist if len(x)==3]
[[1, 2, 3], [8, 9, 10]]
>>>

Ответ 2

Вы также можете использовать for x in values, а не for x in values[:]; последний делает ненужную копию. Кроме того, конечно, код проверяет длину 2, а не 3...

Код печатает только один элемент за значение x - и x выполняет итерацию по элементам values, которые являются подписями. Поэтому он будет печатать только каждый подсписчик один раз.