2016-07-01 3 views
3

는, 내가파이썬에서 [ '[a, a, a]', '[b, b, b]]와 [[a, a, a], [b, b, b]]의 차이점은 무엇입니까? 내 코드를 디버깅 할 때 내 프로그램에서

X1=['[a,a,a]','[b,b,b]'] 

다른 곳 나는

X2=[[a,a,a],[b,b,b]] 

를 생성하고 생성 내 코드 어딘가에 보인다 나는 다음이 두 목록을 추가하고 싶을 때 numpy.array(X1+X2) 오류가 발생합니다. 문제는이 두 코드의 차이점을 알지 못하기 때문에 코드에 어떤 문제가 있는지 알 수 없다는 것입니다 (즉, 따옴표와 따옴표 제외). 이 질문에 대한 답을 찾으면 문제도 찾을 수 있습니다.

+2

'X1'은 2 개의 문자열이있는 목록입니다. 'X2'는 두 개의 목록이 더있는 목록입니다 ... 적어도 우리가 말할 수있는 한 ... (당신은'a'와'b'가 무엇인지에 대해 정말로 말하지 않았습니다 ...) – mgilson

+2

따옴표는 문자열을 만드는 데 사용됩니다. 이것이 기본적인 파이썬 구문이며, numpy와 다르지 않습니다. – Barmar

+0

'X1'과'X2'를 인쇄 해 보셨습니까? 나는 항상 진단 인쇄물을 사용합니다. 배열의 경우'shape'과'dtype'도 확인합니다. – hpaulj

답변

1

그냥 JoshuaWierenga의 대답 @ 떨어져 서민하기 :

>>> a, b = 1, 2 
>>> X1=['[a,a,a]','[b,b,b]'] 
>>> X2=[[a,a,a],[b,b,b]] 
>>> [eval(i) for i in X1] == X2 
True 
>>> [str(i) for i in X2] == X1 
False 
>>> [str(i) for i in X2] 
['[1, 1, 1]', '[2, 2, 2]'] 
>>> a, b = 'a', 'b' 
>>> X2=[[a,a,a],[b,b,b]] 
>>> [str(i) for i in X2] 
["['a', 'a', 'a']", "['b', 'b', 'b']"] 

당신은 X1이 X2로 번역 할 수 있습니다 볼 수 있지만, 다른 방향으로 가고 조금 복잡합니다.

+0

까다로운 방법은 ''[ '+', '. 조인 (map (lambda x :'a 'x == a else'0 ', [a, a, a])) +'] ''이고, 출력을''[a, a, a] ''로 출력합니다. – Rahul

2

X1은

X2는 각각 세 개의 변수를 포함하는리스트를 포함하는리스트 인 두 문자열을 포함하는리스트이다.

문자열을 목록으로 변환하는 것에 대해 빈 목록을 만든 다음 문자열에서 대괄호를 제거한 다음 ","을 찾아서 목록 앞에있는 항목을 추가해야합니다.

+0

나는 어딘가에서이 일을하는 더 쉬운 방법이 있음을 기억하지만 그게 무엇인지 기억할 수 없다. 파이썬에는 이것에 대해 뭔가가있을 수 있습니다. – HimanAB

+0

문자열에 이름이 지정된 변수가 있으면 변환을 수행하는 데 'eval'을 사용해야합니다. 일반적으로 코드를 작성하는 데 안전하지 않거나 안정된 방법이 아닙니다. 올바른 해결책은 처음에는 이러한 것들을 문자열로 생성하지 않는 것입니다. – ShadowRanger

관련 문제