簡體   English   中英

將python列表中的元素匯總在一起

[英]summing together elements in list in python

我有兩個大小相同的列表te :每個元素t[i]對應一個元素e[i] 我想打印每對t[i] e[i] ,但是只要相應的t[i]t[i-1]小於1,就將元素e[i]e[i-1]求和。在這種情況下,應該將元素e[5]e[4]相加,因為相應的t[5]-t[4]<1 關鍵是,我想用第4 + 5個元素替換第4個元素,而不打印第5個元素。 我的代碼是:

t = [1, 5, 10, 16, 20, 21, 28, 33, 39, 42, 45, 50, 56]
e = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M']

for j in range(1,12):
    if t[j]-t[j-1] <= 1:
        print t[j-1], e[j-1]+e[j]
    else:
        if t[j] > t[j-1]:
            print t[j-1], e[j-1]

但這給了我:

1 A
5 B
10 C
16 D
20 EF
21 F
28 G
33 H
39 I
42 J
45 K

我不想打印21 F ,因為它已經在20 EF匯總了。 我怎樣才能做到這一點? 是否可以在if條件結束時增加計數器i 先感謝您。

另一個解決方案是while循環:

t = [1, 5, 10, 16, 20, 21, 28, 33, 39, 42, 45, 50, 56]
e = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M']

j = 1
while j < len(t):
    if t[j]-t[j-1] <= 1:
        print t[j-1], e[j-1]+e[j]
        j += 1
    else:
        if t[j] > t[j-1]:
            print t[j-1], e[j-1]
    j += 1

如果只是關於輸出:

for i in range(0, len(t)):
    if i<1:
        print( t[i], e[i], end="")
    else:
        if t[i] - t[i-1] > 1:
            print()
            print( t[i], e[i], end="")
        else:
            print( e[i], end="")

版畫

1 A
5 B
10 C
16 D
20 EF
28 G
33 H
39 I
42 J
45 K
50 L
56 M

您可以在這里使用解決方案,也可以看一下這篇文章: 跳過python中range函數中的值

t = [1, 5, 10, 16, 20, 21, 28, 33, 39, 42, 45, 50, 56]
e = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M']

skip = False
for j in range(len(t)):
    if not skip:
        if t[j]-t[j-1] <= 1:
            print t[j-1], e[j-1]+e[j]
            skip = True
        else:
            if t[j] > t[j-1]:
                print t[j-1], e[j-1]
    else:
        skip = False

>1 A
>5 B
>10 C
>16 D
>20 EF
>28 G
>33 H
>39 I
>42 J
>45 K
>50 L

暫無
暫無

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

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