2014-12-08 2 views
1

데이터의 처음 세 열을 새로운 빈 목록에 추가 할 수있는이 함수가 있습니다. 출력 예는 다음과 같습니다파이썬 목록에 여러 목록 추가

['red', 'blue', 'green', 'yellow', 'purple', 'black'] 

나는 자신의 목록에이 목록의 모든 두 요소를 둘러싸 싶습니다 즉

[['red', 'blue'], ['green', 'yellow'], ['purple', 'black']] 

내가 어떻게 할 수 있습니까? 감사.

def selection_table(table): 
    atts = [1,2,3] 
    new_table = [] 
    for row in table: 
     for i in range(len(new_atts)): 
      new_table.append(row[atts[i]]) 
    return new_table 

답변

1
>>> my_list = ['red', 'blue', 'green', 'yellow', 'purple', 'black'] 
>>> result = (my_list[i:i+2] for i in range(0, len(my_list), 2)) 
>>> list(result) 
[['red', 'blue'], ['green', 'yellow'], ['purple', 'black']] 
+0

대단히 감사합니다. – shutoutzilla37

2

당신은 this 문제로 수행 할 수

a = ['red', 'blue', 'green', 'yellow', 'purple', 'black'] 

def chunks(l, n): 
    """ Yield successive n-sized chunks from l. 
    """ 
    for i in range(0, len(l), n): 
     yield l[i:i+n] 

print(list(chunks(a, 2)))  

을 제공합니다 :

[['red', 'blue'], ['green', 'yellow'], ['purple', 'black']] 
+0

감사! 나는 그것을 매우 감사한다! – shutoutzilla37

0

간단한 방법은 사용 우편 :

test=['red', 'blue', 'green', 'yellow', 'purple', 'black'] 
c=zip(test[0::2],test[1::2]) 
map(lambda x :list(x),c) 
>>>>[['red', 'blue'], ['green', 'yellow'], ['purple', 'black']] 
,691입니다

또는

test=['red', 'blue', 'green', 'yellow', 'purple', 'black'] 
map(lambda x :list(x),zip(test[0::2],test[1::2])) 
+0

사실, 만약 그가 tupples 목록 대신리스트리스트를 원한다면, 적절한 답은 다음과 같습니다 :'x in zip (test [0 :: 2], test [1 :: 2])에 대한 list [ ]' – bosnjak

+0

@ shutoutzilla37이 대답을 시도하십시오. –