如何使用Python令for遍歷中的相鄰值為中心

簡單一點 數碼 4

本文將從多個方面詳細闡述如何使用Python令for遍歷中的相鄰值為中心,來解決實際問題。

在使用Python for循環遍歷列表或數組時,有時需要判斷相鄰值的大小關係,例如找到最大值或最小值。可以使用zip函數將列表或數組拆分為相鄰元素對,並在遍歷過程中進行比較。

lst = [1, 4, 2, 5, 3]
max_val = lst[0]
for a, b in zip(lst, lst[1:]):
    if b > a:
        max_val = b
print(max_val)  # 輸出5

以上代碼通過zip函數將lst列表拆分為相鄰元素對(1,4),(4,2),(2,5),(5,3),並在遍歷過程中比較找到最大值5。

有時需要計算相鄰元素之間的差值,例如計算每個月的收入增長率。可以使用enumerate函數獲取元素的下標,從而得到相鄰元素的差值。

lst = [1000, 1200, 1500, 1400, 1800]
growth_rates = []
for i, val in enumerate(lst):
    if i == 0:
        continue  # 跳過第一個元素
    growth_rate = (val - lst[i-1]) / lst[i-1]
    growth_rates.append(growth_rate)
print(growth_rates)  # 輸出[0.2, 0.25, -0.06666666666666667, 0.2857142857142857]

以上代碼通過enumerate函數獲取到lst列表中元素的下標i和值val,計算得到相鄰元素的差值,並將結果存入growth_rates列表。

有時需要找到列表或數組中的連續遞增的子序列,例如查找最長的連續遞增子序列。可以使用上一節提到的方法計算相鄰元素之間的差值,判斷是否為正數從而確定是否為遞增序列。

lst = [1, 2, 3, 2, 4, 5, 7, 6]
sub_seqs = [[]]
for i, val in enumerate(lst):
    if i == 0:
        sub_seqs[-1].append(val)
        continue
    if val > lst[i-1]:
        sub_seqs[-1].append(val)
    else:
        sub_seqs.append([val])
longest_sub_seq = []
for seq in sub_seqs:
    if len(seq) > len(longest_sub_seq):
        longest_sub_seq = seq
print(longest_sub_seq)  # 輸出[2, 4, 5, 7]

以上代碼通過計算相鄰元素之間的差值,判斷是否為遞增序列,將連續遞增的子序列存入sub_seqs列表,並遍歷sub_seqs找到最長的連續遞增子序列。

有時需要統計列表或數組中元素的出現頻率,例如統計某個單詞在句子中出現的次數。可以使用collections模塊中的Counter函數。

from collections import Counter
lst = [1, 2, 3, 2, 4, 5, 7, 6, 2]
freq_dict = Counter(lst)
print(freq_dict)  # 輸出Counter({2: 3, 1: 1, 3: 1, 4: 1, 5: 1, 7: 1, 6: 1})

以上代碼使用Counter函數統計lst列表中元素的出現頻率,並將結果存入freq_dict字典。

回復

共1條回復 我來回復
  • 暫無回復內容