2016-10-25 5 views
0

일반적으로 Python과 코딩에 새로운 것이 있습니다. 그래서 나는 정의 된리스트를 가지고 있으며리스트에서 요소를 훑어보고 내가 찾고있는 것과 일치 할 때까지리스트에있는 위치를 기록하는 루프를 만들려고합니다.목록의 요소를 조사하려면 어떻게해야합니까?

list = [1, 2, 3, 4] 
x = 3 
for x in list: 
if x == list 
print(x, list.index(x)) 

이것은 시도이지만 전혀 작동하지 않습니다.

+0

무엇이 효과가 없는지 설명하십시오. 무슨 일이 일어나고 있다고 생각하는 코드에서 일어나고 있지 않습니다. – idjaw

+0

@ idjaw 기본적으로 그 목록에서 3 번을 찾으려면 루프를 사용하려고하는데 루프가 3 번에 도달하면 루프가 멈추고 "2"가되어야하는 목록의 3 번 위치가 출력됩니다. – Langfao

+0

누군가가 방금 모든 것을 해결하는 답변을 게시했습니다. 그게 당신의 문제에 대답해야합니다. – idjaw

답변

1

for x in list을 반복해서는 안됩니다. 그러면 x 값 [1,2,3,4]이 3이 아니며 파이썬의 들여 쓰기와 조심해야합니다. 파이썬은 들여 쓰기에 민감합니다.

list = [1, 2, 3, 4] 
x = 3 
for i in list: 
    if (i == x): 
     print(i, list.index(i)) 

내가 list 것을 잊어 내장 된 구문은 다음과 같습니다 어쩌면 이것은 당신이 찾고있는 코드입니다. 변수로 list을 사용해서는 안됩니다. 'list1'또는 내장 구문 이름을 제외한 다른 것으로 변경하십시오.파이썬에서 내장 된 문법의 목록입니다. https://docs.python.org/2/library/functions.html

+1

'(i == x)'주위에는 괄호가 필요하지 않습니다. 그것은 단지'i == x'이어야합니다. 또한 * list *의 이름으로'list'를 사용하면 내장 목록이 그림자 처리되므로 이름도 변경해야합니다. – idjaw

+0

@idjaw -이 조건에서는 괄호가 필요하지 않습니다. 2 바이트를 저장하고'list '가 내장되어 있음을 잊어 버렸습니다. 그래, 다른 이름이어야 해. – Ferr

1

들여 쓰기와 함께 문제는 동일한 변수 x을 조회 및 반복에 사용한다는 것입니다.

_list = [1, 2, 3, 4] 
lookup = 3 
for element in _list: 
    if lookup == element: 
     print(element, _list.index(lookup)) 

을 또한, 특정 경우 :

또한,이

는 다음 사항을 고려 내장 함수로 사용하기 때문에 당신이 변수 이름으로 list을 사용하지 않는 것이 좋습니다 방금 찾는 경우

_list = [1, 2, 3, 4] 
lookup = 3 
for index, element in enumerate(_list): 
    if lookup == element: 
     print(element, index) 

가의 인덱스를 찾을 수 : 인덱스를 찾을 루프를 사용하여, 당신이 enumerate 기능을 사용하는 것이 좋습니다 요소를 목록 안에 넣고 사용하면 index 기능 만 사용할 수 있습니다. 조회 목록에없는 경우, ValueError가 발생 될 수 있음을

_list = [1, 2, 3, 4] 
lookup = 3 
print(lookup, _list.index(lookup)) 

참고.

+1

조건에 콜론이 누락되었습니다. – idjaw

+0

고마워, copypasting하는 동안 그것을 놓쳤습니다. – table

2

검색 변수는 x이며, 루프 반복자 x을 호출하여 검색 쿼리를 덮어 씁니다. 그것을 다른 것으로 부르십시오. 또한 list에 전화하여 내장 된 것을 마스킹하지 않도록하십시오. enumerate을 사용하여 쿼리가 여러 번 나타나는 경우를 올바르게 처리 할 수도 있습니다. 또한 if 문 끝에 콜론을 잊지 마십시오.

l = [1, 2, 3, 4] 
x = 3 
for idx,item in enumerate(l): 
    if item == x: 
     print(x, idx) 
+0

그들은 또한 자신의 상태가 끝날 때'결장 '을 놓쳤습니다. 그들은 "전혀 작동하지 않는다"고 말했다. 나는 거기에 그것을 포함시킬 것입니다. – idjaw

+1

@idjaw - '또한'을 추가했습니다. – TigerhawkT3

1

시도해보십시오. idjaw가 언급 한 바와 같이 위의 코드 조각 솔루션 작동하지만

if x in list: 
    print(list.index(x)) 

는 기타 목적을 위해 list로 파이썬 키워드를 사용하지 않는 그것은 로컬 범위에서 키워드의 기능을 무색하게한다. 철자를 변경하거나 대신 동의어를 사용할 수 있습니다. 그러나 키워드와 동일한 이름을 사용하는 것이 절대적으로 필요한 경우 Pythonic 방법은 변수의 이름을 바꿀 때 하나의 후행 밑줄을 사용하는 것입니다. 그건 완벽하게 괜찮은 list_입니다.

+0

* list *의 이름으로'list'를 사용하지 않는 것이 좋습니다. 그것은 내장 된 * 목록 *을 어둡게하기 때문입니다. – idjaw

+0

네, 맞습니다. 나는 그것을 내 대답에 추가 할 것입니다. – Ashan

+0

잘 작동하지만 목록의 요소를 찾기 위해 루프를 사용하려고합니다. – Langfao

관련 문제