簡體   English   中英

Python:列表的輸出格式

[英]Python: Output format of a list

我有溫度測量的清單:

temp = [ [39, 38.5, 38], [37,37.5, 36], [35,34.5, 34], [33,32.5, 32], [31,30.5, 30], [29,28.5, 28], [27,26.5,26] ]

幾天內每5個小時記錄一次每個值。 第一天是溫度的第一項列表: [39, 38.5, 38],第二天是溫度的第二項列表: [37, 37.5, 36]

我總是做的是,我遍歷“溫度”並計算值之間的時間差,並將其保存為時間列表。 (時差始終為5h)

time=[]
for t in temp:
 for i,val in enumerate(t):
         i=i*5
         time.append(i)
print time

輸出看起來像這樣:

time: [0, 5, 10, 0, 5, 10, 0, 5, 10, 0, 5, 10, 0, 5, 10, 0, 5, 10, 0, 5, 10]

但是我想獲取每天的子列表,例如:

time: [ [0, 5, 10] , [0, 5, 10], [0, 5, 10], [0, 5, 10], [0, 5, 10], [0, 5, 10], [0, 5, 10] ]

我的代碼有什么問題?

您不斷追加到同一列表,應該每天創建一個新列表。

time=[]
for t in temp:
    day_list = [] # Create a new list
    for i,val in enumerate(t):
        i=i*5
        day_list.append(i) # Append to that list
    time.append(day_list) # Then append the new list to the output list
print time

對於列表理解:

time = [[i*5 for i, val in enumerate(t)] for t in temp]

您將所有時間戳附加到一個單級列表中,因此這就是算法輸出的結果。

這是獲取列表列表的一種方法:

>>> [list(range(0, len(t) * 5, 5)) for t in temp]
[[0, 5, 10], [0, 5, 10], [0, 5, 10], [0, 5, 10], [0, 5, 10], [0, 5, 10], [0, 5, 10]]

這可以正確處理可能具有不同長度的temp子列表。

如果您希望每個列表中的內容完全相同,請執行以下操作:

time = [[0,5,10] for _ in temp]

要考慮可變子列表的長度:

在python 2中

time = [range(0, len(i)*5, 5) for i in temp]

在python 3中,必須實現范圍:

time = [list(range(0, len(i)*5, 5)) for i in temp]

您必須創建一個臨時子列表,然后將該子列表附加到實際列表中,以獲得列表中的一堆子列表。

temp = [ [39, 38.5, 38], [37,37.5, 36], [35,34.5, 34], [33,32.5, 32], [31,30.5, 30], [29,28.5, 28], [27,26.5,26] ]
time=[]
for t in temp:
    l = []
    for i,val in enumerate(t):
        i=i*5
        l.append(i)
        if len(l) == 3:
            time.append(l)
print time

使用列表理解,您可以在一行中完成:

time = [[i*5 for i, val in enumerate(t)] for t in temp]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM