하위 목록이있는 목록이 있습니다. 길이가 3 인 모든 하위 목록을 인쇄하고 싶습니다.
파이썬에서 다음을 수행하고 있습니다.
for x in values[:]:
if len(x) == 3:
print(x)
values
원래 목록입니다. 위의 코드는 x
?의 각 값에 대해 길이가 3 인 모든 하위 목록을 인쇄합니까 ? 하위 목록을 length == 3
한 번만 표시하고 싶습니다 .
문제가 해결되었습니다. 문제는 Eclipse 편집기에 있습니다. 이유를 이해하지 못하지만 루프를 실행할 때 내 목록의 절반 만 표시됩니다.
Eclipse에서 변경해야 할 설정이 있습니까?
답변
이 시도,
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]
또는 더 많은 파이썬 사용 목록 이해 가 필요한 경우
>>> [x for x in mylist if len(x)==3]
[[1, 2, 3], [8, 9, 10]]
>>>
답변
당신은 for x in values
오히려 오히려 사용할 수 있습니다 for x in values[:]
; 후자는 불필요한 사본을 만듭니다. 또한 코드는 3이 아닌 2의 길이를 검사합니다.
이 코드는 x
– 값당 하나의 항목 만 인쇄 하며 하위 목록 인의 x
요소를 반복 values
합니다. 따라서 각 하위 목록을 한 번만 인쇄합니다.
답변
여기 내가 찾고있는 해결책이 있습니다. List1의 숫자 요소 차이가 포함 된 List2를 작성하려는 경우
list1 = [12, 15, 22, 54, 21, 68, 9, 73, 81, 34, 45]
list2 = []
for i in range(1, len(list1)):
change = list1[i] - list1[i-1]
list2.append(change)
while len(list1)
은 11 (요소)이지만 len(list2)
list1의 인덱스 0을 가진 요소에서 for1을 시작하지 않기 때문에 10 개의 요소 만 시작 한다는 점에 유의하십시오.
답변
대신이 작업을 수행하십시오.
values = [[1,2,3],[4,5]]
for x in values:
if len(x) == 3:
print(x)