2014-07-25 1 views
2

같은 색상 목록이있는 경우 루프에서 데이터 구조를 만드는 방법은 무엇입니까?두 개의 열 데이터 구조 - Python

[(u'blue',), (u'green',), (u'black',)] 

아래와 같이 데이터 구조 (2 열 목록)가 필요합니다. 여분으로 또한

(('blue', 'blue'), 
('green', 'green'), 
('black', 'black')) 

, 왜 (와 변수의 유형) U로 시작하고 ''에 둘러싸여 항목으로 이루어져 내 색상의 목록입니다? 문자열 작업을 시도 할 때 문자열의 일부로 인식하지 못하는 것 같습니다. 데이터 (실제로 색상이 아닙니다!)는 SQL db의 열에 대한 pyodbc 쿼리에서 가져옵니다. 예를 들어

나는 (안 올바른 구문) colours_list에

row[2:] 
print row 

(u'ue',) # output 

감사를 첫 번째 행을 수정한다면!

답변

3

발전기 표현과 터플 풀기를 사용 :

>>> colors = [(u'blue',), (u'green',), (u'black',)] 

# If you want a tuple of 2-items tuples, use `tuple()` and generator expression 
>>> tuple((color, color) for color, in colors) 
((u'blue', u'blue'), (u'green', u'green'), (u'black', u'black')) 

# If you want a list of 2-items tuples, use list comprehension 
>>> [(color, color) for color, in colors] 
[(u'blue', u'blue'), (u'green', u'green'), (u'black', u'black')] 

u'...' 리터럴 유니 코드 문자열입니다. 당신이 str 객체에 유니 코드 개체를 변환 할 수 있습니다, str function 또는 unicode.encode method를 사용

(Unicode Strings 참조) :

>>> tuple((str(color), str(color)) for color, in colors) 
(('blue', 'blue'), ('green', 'green'), ('black', 'black')) 
>>> tuple((color.encode(), color.encode()) for color, in colors) 
(('blue', 'blue'), ('green', 'green'), ('black', 'black')) 
+0

내 접근이 조의 캐스트 목록 이해했을 것이다. res = tuple ([(col, col) for col in x]) 생성자를 사용하는 것이 훨씬 더 파이썬적인 방법입니까? – zinjaai

+1

@zinjaai, 생성자 표현식을 사용하면 임시 목록 객체를 만들지 않아도됩니다. – falsetru

+0

tupule()에는 3 개의 인수가 필요하지 않습니까? –