在Python中动态命名列表

2024-03-28 14:30:03 发布

您现在位置:Python中文网/ 问答频道 /正文

正如标题所说,我试图在Python中动态地命名列表。代码的目的是围绕连续的字母创建列表。这是我的密码:

consecutive_duplicates=["a","a","a","a","b","c","c","a","a","d","e","e","e","e","X"]

count=0
name=0

for i in consecutive_duplicates:
    if consecutive_duplicates[count]==consecutive_duplicates[count+1] or
              consecutive_duplicates[count]==consecutive_duplicates[count-1]:
        consecutive_duplicates[name].append(i)
        count=count+1
    else:
        consecutive_duplicates[name+1].append(i)
        name=name+1

我不知道如何给名单命名。很明显,这并没有起到应有的作用。怎样才能成功?你知道吗

我在定义动态列表时也遇到了问题。我该怎么做?你知道吗


Tags: 代码namein目的密码标题列表for
1条回答
网友
1楼 · 发布于 2024-03-28 14:30:03

您可以使用itertools.groupby

>>> from itertools import groupby
>>> lis = ["a","a","a","a","b","c","c","a","a","d","e","e","e","e","X"]
>>> [list(g) for k,g in groupby(lis)]
[['a', 'a', 'a', 'a'], ['b'], ['c', 'c'], ['a', 'a'], ['d'], ['e', 'e', 'e', 'e'], ['X']]

与其创建动态变量,不如使用dict:

>>> dic = { 'lis'+str(i): list(g) for  i,(k,g) in enumerate(groupby(lis), 1)}
>>> dic['lis1']
['a', 'a', 'a', 'a']
>>> dic['lis2']
['b']

相关问题 更多 >