Пересечение списка в Python
У меня есть список с подсписками. Я хочу напечатать все подсписные буквы с длиной, равной 3.
Я делаю следующее в python:
for x in values[:]:
if len(x)==3:
print x
'values' - это исходный список. Вызывает ли вышеуказанный код весь подсписчик с длиной, равной 3 для каждого значения x? Я хочу отображать подсписки, где length==3
только один раз.
проблема решена. проблема заключается в редакторе eclipse. я не понимаю причину, но она отображает только половину моего списка, когда я запускаю свой цикл.
Есть ли какие-либо настройки, которые мне нужно изменить в eclipse?
Ответы
Ответ 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
, которые являются подписями. Поэтому он будет печатать только каждый подсписчик один раз.