這個答案將使用由@Aaron Digulla答案同樣的方法工作,稍有更Python語法。這可能會使以上答案更易於理解。
>>> for a,b,c in zip(foolist[::3],foolist[1::3],foolist[2::3]):
>>> print '{:<30}{:<30}{:<}'.format(a,b,c)
exiv2-devel mingw-libs tcltk-demos
fcgi netcdf pdcurses-devel
msvcrt gdal-grass iconv
qgis-devel qgis1.1 php_mapscript
這可以很容易地適應任何數量的列或變量列,這將導致類似的@gnibbler答案。間距可以根據屏幕寬度進行調整。
更新:按要求說明。
索引
foolist[::3]
選擇的foolist
每第三個元件。 foolist[1::3]
選擇第三個元素,從第二個元素開始('1',因爲python使用零索引)。
In [2]: bar = [1,2,3,4,5,6,7,8,9]
In [3]: bar[::3]
Out[3]: [1, 4, 7]
拉鍊
正在壓縮列表(或其他iterables)產生的列表中的元素的元組。例如:
In [5]: zip([1,2,3],['a','b','c'],['x','y','z'])
Out[5]: [(1, 'a', 'x'), (2, 'b', 'y'), (3, 'c', 'z')]
一起
把這些想法我們一起讓我們的解決方案:
for a,b,c in zip(foolist[::3],foolist[1::3],foolist[2::3]):
在這裏,我們首先生成的foolist
三「片」,由每一個三分每個索引元素和一個偏移量。單獨它們每個僅包含三分之一的列表。現在,當我們壓縮這些切片並迭代時,每次迭代都會給我們三個foolist
的元素。
這正是我們想要的東西:
In [11]: for a,b,c in zip(foolist[::3],foolist[1::3],foolist[2::3]):
....: print a,b,c
Out[11]: exiv2-devel mingw-libs tcltk-demos
fcgi netcdf pdcurses-devel
[etc]
相反的:
In [12]: for a in foolist:
....: print a
Out[12]: exiv2-devel
mingw-libs
[etc]
首先,它是不使用字典作爲變量名 其次是一個好主意,那東西你想在這裏打印是一個列表,一個字典使用{}和:分隔鍵和值 – 2009-10-06 07:49:57
-1:問題的標題是「list」 - 一個完整的重複。這個問題說「字典」。示例代碼是一個列表 - 一個完整的重複。你想將列表轉換爲字典並打印?如果是這樣,解決這個問題來描述你真正想要的東西。 – 2009-10-06 10:49:35
我已經更正了建議的描述和示例代碼。標題和描述現在反映了我的目標。感謝您的更正。 – 2009-10-06 20:33:24