저는 파이썬 초보자입니다. 그래서 저는 여기서 도움을 청할 수 있다고 생각했습니다.목록에 파이썬에서 0이 아닌 3 개의 연속적인 인덱스가 있는지 확인하십시오.
여기에 편의상 만 0과 1 두 개의 입력 목록입니다 :
x = [1, 1, 1, 0, 1]
y = [1, 1, 0, 1, 0]
는 세 개의 연속적인 요소가 때문에 나는 X의 경우 True를 반환 파이썬의 논리를 정의하는 것을 시도하고있다가 0이 아닌 경우; 인덱스 0 : 2는 모두 0이 아닙니다. 동일한 함수는 y가 0이 아닌 3 개의 연속 요소를 가지지 않으므로 y에 대해 아무것도 반환하지 않습니다. 나는 또한 가치에 관해서가 아니라 지표에 관해서 연속적이라는 것을 의미한다!
이 논리를 해결하는 것 외에도 함수는 원래 조건이 true 인 경우 3 개의 0이 아닌 요소로 구성된 패치의 마지막 0이 아닌 요소의 인덱스와 값을 반환해야합니다.
는 자, 내가 여기, is_three_consecutive_non_zero라는 가상 함수가 있다고 가정 해 보자는 함수가 어느 경우에 반환 것입니다 :
is_three_consecutive_non_zero(x) # should evaluates to (True, 2, 1)
2 연속 3 사람과 1 그룹의 마지막 하나의 인덱스 0이 아닌 세 요소의 패치의 마지막 0이 아닌 요소의 값입니다.
첫 번째 출력이 false이면 함수는 다른 것을 반환하지 않습니다. 여기
은 성가신 트리오 중첩에 대한 루프 좋은 출발점이 될 수있는 조건의 경우 몇 가지와 기능 :def is_three_consecutive_non_zero(list):
if 0 not in list:
return True, len(list)-1, list[len(list)-1]
for l in range(0, len(list)):
for m in range(1, len(list)):
for n in range(2, len(list)):
if (l != m) & (m != l) & (n == m + 1) & (m == l + 1):
if (list[l] != 0) & (list[m] != 0) & (list[n] != 0):
return True, n, list[n]
하는 현실을 해보자 :
is_three_consecutive_non_zero(x)
is_three_consecutive_non_zero(y)
그것은 좋은 것입니다 당신이 경우 더 나은 논리를 공유 할 수 있거나 다른 사용 가능한 파이썬 모듈을 사용하는 단일 또는 2 개의 라이너 일 수 있습니다. 그건 그렇고,이 목록은 매우 작기 때문에 시간이나 공간 문제에 관심이 없습니다.
z = [0, 1, 1, 1, 1]
is_three_consecutive_non_zero(z) # evaluates to (True, 3, 1) which is consistent with what I want
덕분에 많은
같은'list'는, 당신은 당신의 코드 –