循環遍歷列表以提取特定模式

用戶方

我有一個非常具體的問題,我不確定如何繼續。

我有一個數字列表,我想從中提取一些特定的模式,在那裡我遍歷列表並創建一個新的,用一個例子更容易解釋。

假設我有一個列表,a = [2, 9, 3, 2, 3, 5, 7, 9]。

我想對這個列表做的是一次循環 4 個數字,並根據它們出現在序列中的時間給它們對應的字母。

即前四個數字 = 2932 = ABCA

第二個數字序列 = 9323 = ABCB

第三個序列 = 3235 = ABAC

第四個序列 = 2357 = ABCD

第五個序列 = 3579 = ABCD

然後我想把這些序列添加到另一個列表中,現在看起來像,

b = [ABCA, ABCB, ABAC, ABCD, ABCD]

我真的不確定代碼的格式應該如何,新列表的長度將始終比原始列表少 3。任何幫助都會很棒,謝謝。

曼萊A

您可以使用字典將字母分配給數字,然後再次閱讀該字典以訪問相關字母。它有 2 個循環,這並不理想,但它可以完成工作:

a = [2, 9, 3, 2, 3, 5, 7, 9]
len_a = len(a)
output = []
letters = 'ABCD'
for i in range(len_a-3):
    d = {}
    k = 0
    for j in a[i:i+4]:
        if j not in d:
            d[j] = letters[k]
            k += 1
        else:
            continue
    letter_assignment = ''.join([d[j] for j in a[i:i+4]])
    output.append(letter_assignment)
    

輸出:

print(output)
# ['ABCA', 'ABCB', 'ABAC', 'ABCD', 'ABCD']

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章