2012-12-10 4 views
2

가능한 중복 :
What is the difference between list and list[:] in python?목록 [:] = process_list (목록)는 파이썬에서 무엇을합니까?

그래서 나는 다음과 같은 질문에 대한 응답을 찾을 수 없습니다 상황에 부딪쳤다 파이썬에서 아주 새로운 오전.

이것은 파이썬에서 무엇을 의미합니까?

l[:] = process_list(l) 

l

list는 기본적으로 나는 내가 process_list 방법의 응답에 따라 (새로운 사람과 이전 값을 대체)을 수정하려는 글로벌 선언 목록을 입력합니다. 나는이 같은 시도 할 때 : Unresolved reference 'l'

당신이 무슨 차이가 나는 현재 사용하고있는 첫 번째 방법 경우 좋은 일이 설명해 주시겠습니까 :

l = process_list(l) 

나는이 얻을?

+0

정말 목록이라고 할 수 있습니까? list는 빌트인 타입이고, 변수 "list"를 호출하면 안된다. –

+0

@DiegoBasch : no는 "list"라고하지 않지만, 간단하고 명백하게 유지하고 싶다. 그리고 파이썬에는이 타입이 내장되어 있다는 사실을 잊어 버렸다. –

답변

4

... 방법이다 list 끔찍한 변수 이름 (list = whatever로 대체 대조적으로),

a = None 
def foo(): 
    a = 5 # local 'a' shadows global 'a' 

슬라이스 할당은 수정하지 할당, 그래서 이름 연속 주 : 로컬 변수가 될 수있는 이름 지정은 글로벌 그림자 경우에도 그 이름으로 지역의 변수를 생성 ES는 글로벌 참조하십시오 : 세계를 음영 지역 변수를 생성하여, 세계가 더 이상 볼 수 없습니다 때문에

a = [1, 2, 3] 
def foo(): 
    a[:] = [5] # modifies global 'a' 

Unresolved reference가 발생합니다. 원하는 것을 수행하는 또 다른 방법은 global입니다.

a = None 
def foo(): 
    global a 
    a = 5 # rebinds global 'a' 
+0

이 명확하고 간단한 설명에 감사드립니다. –

+0

뭔가 도와 줄 수 있어요? 그 목록에 (전 세계적으로 선언 된) 사전을 할당하려고합니다. 프로그램의 한 지점까지는 목록으로 사용했지만 현재는 사전으로 사용하고 싶습니다. 가장 좋은 방법은 무엇일까요? 고맙습니다! –

+1

@ andreea.sandu는'global a'를 사용하면'a = {}'라고 쓸 수 있습니다. – ecatmur

2

list[:] = whatever 기존리스트의 내용을 변경한다

함수에서

+0

당신은 그 이름에 대해 옳았습니다. 그러나 제 코드에서는 그렇지 않습니다. 파이썬에는이 타입이 내장되어 있다는 사실을 잊어 버렸습니다. –

관련 문제