2016-09-06 2 views
2

나는리스트의 목록을 가지고 :테이블에 목록의 목록을 변환

apples  Alice dogs 
oranges  Bob cats 
cherries Carol moose 
banana  David goose 

나를 위해 트릭은 "라인을 가지고있다 :이 테이블로 변환해야

tableData = [['apples', 'oranges', 'cherries', 'banana'], 
      ['Alice', 'Bob', 'Carol', 'David'], 
      ['dogs', 'cats', 'moose', 'goose']] 

"열로 변환 할 수 있습니다 (예 : 사과, 오렌지, 체리, 같은 열에서 바나나)

내가 시도 다른 옵션 (A) :

for row in tableData: 
     output = [row[0].ljust(20)] 
      for col in row[1:]: 
      output.append(col.rjust(10)) 
      print(' '.join(output)) 

옵션 (B) : 2

for i in tableData: 
    print(i[0].ljust(10)+(str(i[1].ljust(15)))+(str(i[2].ljust(15)))+ 
    (str(i[3].ljust(15))))  

없음이 문제를 해결하기 보인다

방법.
미리 제안 해 주셔서 감사합니다.

+0

이 Py2 또는 Py3이 맞나요? 'print'는 다른 것과 다르며, 예제 코드가 사용하는 방식은 그 차이를 명확히하기 위해 어떤 변화도주지 않습니다. – ShadowRanger

+0

또한 : [Python : 테이블 형식 데이터로 인쇄 목록] (0120-553-2115) – poke

+0

이것은 python 3.5 –

답변

1

"플립"하는 가장 쉬운 방법은 중첩 된 목록 zip을 사용하는 것입니다

for fruit, name, animal in zip(*tableData): 
    print(fruit.ljust(10), name.ljust(10), animal.ljust(10)) 

이 인쇄 : zip : 이미 이것에 대한 내장 함수가

apples  Alice  dogs 
oranges Bob  cats 
cherries Carol  moose 
banana  David  goose 
+0

놀라운 !!!입니다. 감사합니다. –

0

.

zip(* [['apples', 'oranges', 'cherries', 'banana'], 
     ['Alice', 'Bob', 'Carol', 'David'], 
     ['dogs', 'cats', 'moose', 'goose']]) 
5

테이블을 조 변경하려면 zip-and-splat 트릭을 사용하십시오.

왼쪽 또는-오른쪽 정당화 format spec language 사용하여 세포를하려면

>>> for row in zip(*tableData): 
...  print '{:<10}{:>7} {:<10}'.format(*row) 
...  
apples  Alice dogs  
oranges  Bob cats  
cherries Carol moose  
banana  David goose 
+0

마지막 입력에 명시적인 필드 너비가 필요 없습니다. 왼쪽 정렬이므로 어쨌든 너비를 초과하면 엎질러집니다. 그렇지 않으면, 네, 최선의 대답입니다. – ShadowRanger

+0

감사합니다. 이 #가 정확히 무엇을 나타내는가 –

+1

링크를 따라 갔습니까? 숫자는 왼쪽 또는 오른쪽 정렬에 얼마나 많은 공 간이 왼쪽 또는 오른쪽에 추가되어야하는지 알 수 있도록 내용 용으로 예약 된 공간입니다. – Matthias

1

한도 pandas.DataFrame 함께 놀러 수 :

In [22]: import pandas as pd 
In [22]: pd.DataFrame(tableData).T # .T means transpose the dataframe 
Out[22]: 
      0  1  2 
0 apples Alice dogs 
1 oranges Bob cats 
2 cherries Carol moose 
3 banana David goose 

에 의해 그 성가신 번호를 제거 열 및 색인을 공백으로 설정 :

In [27]: l1, l2 = len(tableData), len(tableData[0]) 

In [28]: pd.DataFrame(tableData, index=['']*l1, columns=['']*l2).T 
Out[28]: 

    apples Alice dogs 
    oranges Bob cats 
    cherries Carol moose 
    banana David goose 
+0

하향 투표하지는 않지만 간단한 문제로 판다를 털어 내면 과장 될 수 있다고 생각합니다. :-) – ShadowRanger

+0

@ShadowRanger 나는 이것을 고려했다. 그러나 두 번째 생각에 나는 질문자가 고려할 가치가있는 도구라고 생각한다. (그렇지 않다면 장기적으로) :) –

관련 문제