나는 다음과 같은 중첩 된 목록이 있습니다파이썬 : 시험 중첩 된 목록에서 특정 인덱스의 평등에 대한
nlist = [[2, 0, 4], [2, 0, 4], [0, 0, 4], [0, 0, 4]]
내가 각 목록의 첫 번째 요소가 같은지 여부를 평가하고자한다. 전체 중첩 목록이 동일하지만 특정 인덱스가 아닌지 평가하는 방법을 찾았습니까?
나는 다음과 같은 중첩 된 목록이 있습니다파이썬 : 시험 중첩 된 목록에서 특정 인덱스의 평등에 대한
nlist = [[2, 0, 4], [2, 0, 4], [0, 0, 4], [0, 0, 4]]
내가 각 목록의 첫 번째 요소가 같은지 여부를 평가하고자한다. 전체 중첩 목록이 동일하지만 특정 인덱스가 아닌지 평가하는 방법을 찾았습니까?
generator expression을 매개 변수로 사용하여 all()
함수를 사용합니다. 한마디로
all(sublist[0] == nlist[0][0] for sublist in nlist)
,
all()
는 원래 목록의 모든 하위 목록에 대한 모든
sublist[0] == nlist[0][0]
경우
True
를 반환합니다. 항목이
nlist[0][0]
과 같지 않은 경우
False
을 반환합니다.
all() 함수에 익숙하지 않았습니다. 이것은 완벽하게 작동합니다. 10 분 안에 받아 들일 것입니다. 감사. – spiral01
당신은 각각의 하위 목록의 첫 번째 요소의 집합을 만들 수 있으며, 세트에는 반복이 없기 때문에 세트의 길이가 하나라면, 당신이 볼 수
nlist = [[2, 0, 4], [2, 0, 4], [0, 0, 4], [0, 0, 4]]
result = len(set(l[0] for l in nlist)) == 1
print(result) # => False
모든 찾을 수 있습니다
>>> from itertools import groupby
>>> nlist = [[2, 0, 4], [2, 0, 4], [0, 0, 4], [0, 0, 4]]
>>> c= [i for i,k in groupby([n[0] for n in nlist])]
>>> c
[2, 0]
>>> d=[[i for i, x in enumerate(nlist) if x[0]==j] for j in c]
>>> d
[[0, 1], [2, 3]]
>>> R=dict(zip(c, d))
>>> R
{0: [2, 3], 2: [0, 1]}
각 가능한 첫 번째 값과 초기 목록에서 인덱스의 목록이있는 dict
를 얻을 : 다음 고유의 첫 번째 요소와 인덱스를 확인합니다.
first_num = nlist[0][0]
for sublist in nlist:
if first_num != sublist[0]
print(False)
print(True)
'무엇과 동일합니까? – Ajax1234