2017-03-13 3 views
3

my_list=["a","b","c"]으로 목록이 있다고 가정 해보십시오. 내가 뭘 원하는 내가 그들의 이름에 따라 그들에 일부 요소를 추가 할 수 있도록다른 목록의 요소 이름으로 빈 목록 만들기

a=[] b=[] c=[]

로 빈 목록을 만드는 것입니다.

+2

왜 이것을하고 싶습니까? 아마도 목록 목록이 여기에서 잘 작동 할 것입니다. – ForceBru

+1

키가'a','b','c'이고 값이 빈 목록 인'dict'은 아마 사용하지 않았을 것입니다. – Akavall

+0

이름을 기반으로 목록에 요소를 추가하려면 키와 이름으로 된 사전을 값으로 사용할 수 있습니다. – chatton

답변

1

가고, 그것은 당신에 의해 입력 된 것처럼 명령을 실행하는 기능 exec를 사용하지만 당신이 매우 안전하지 않습니다 명심 동적 변수 이름

for i in my_list: 
    exec(i+'=[]') 

i를 사용 do

12

프로그래밍 방식으로 변수를 만드는 것은 매우 나쁜 생각입니다. 대신 키와 그 이름 사전을 확인하십시오

my_lists = {key:[] for key in my_list} 

그런 다음이처럼에 추가 할 수 있습니다

my_lists['a'].append(some_data) 

를 이것은 또한 당신이 필요로하는 경우에 그들을 통해 당신에게 쉽게 루프 수 있다는 장점을 제공합니다 에. 여기

+0

나는 이미 이것을 업 그레 이드했지만 새로운 Python 프로그래머가이 게시물을 발견하고 "프로그래밍 방식으로 변수를 나쁜 아이디어로 만드는 이유는 무엇입니까?"라고 묻는 미래를 미리 생각하고 있습니다. 왜 이런 말을했는지 좀 설명해 주시겠습니까? –

+3

여러 가지 이유로 나쁜 생각입니다. 1) 사용자 입력으로 변수를 만들면 사용자가 변수 중 하나를 쉽게 덮어 쓰거나 키워드를 사용하려고 할 수 있습니다. 2) 변수를 추적하는 IDE에서 도구를 효과적으로 비활성화하여 디버깅을 악몽으로 만듭니다. 3) 논리적으로 그룹화 된 항목은 여러 떼; 이것은 루핑을 더 쉽게 만들고 대부분의 그룹은 어떤 시점에서 루프를 필요로한다. 4)이 변수들을 읽는 것은 또 다른 지저분한'exec' 호출을 포함 할 것이다. 5) 얼마나 많은 변수가 만들어 졌는지 알지 못한다면 로컬 네임 스페이스를 검사하는 또 다른 해킹 방법이 필요합니다. 6) 확실한 다른 이유 ... – Novel

+0

나는 그가 당신을 위해 편집 한 것이라고 생각합니다 :) – nir0s

관련 문제