首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python,列表理解

Python,列表理解
EN

Stack Overflow用户
提问于 2020-05-14 05:22:04
回答 1查看 34关注 0票数 0

我对编码真的很陌生,所以我希望我能得到一个我更可能理解的答案,而不是它的效率。我有一个由字符串组成的列表,如下所示:

月份= '04','04','04','04','05','05','05','05','05','05','05','05','05','06','07','07,'08','09','10','11','12','1','2','3','4‘

我尝试按值拆分这个列表,即我希望输出如下所示:

listed_months = ['04','04','04','04','04','05','05','05','05','05','05','05','05',……‘04’]

注意:尽管最后一个元素仍然获得了自己的列表,但它已经有了一个列表,这一点非常关键。

下面是我的开场白:

代码语言:javascript
复制
months = ['04', '04', '05', '05', '05', '06', '07', 
'07', '08', '09', '10', '11', '12', '1', '2', '3', '4']

listed_months = []
per_month = []
for i in range(0, len(months)):
    if months[i] == months[1+1]:
        per_month.append(months[i])
    elif months[i] != months[1+1]:
        per_month = []
        months = month[i+1]
        listed_months.append(per_month)

我得到一个问题,索引变得超出范围,如果我完成这个循环,因为我强制最后一个值。我觉得我就快到了,但如果能得到一些帮助,我会非常感激。

EN

回答 1

Stack Overflow用户

发布于 2020-05-14 05:43:55

如果你想自己实现它,下面是我能找到的最简单的东西:

代码语言:javascript
复制
months = [
    '04', '04',
    '05', '05', '05',
    '06',
    '07', '07',
    '08',
    '09',
    '2',
    '3',
    '4', '4'
]

result = [[months[0]]]

for m in months[1:-1]:
    om = "%02d" % int(m)
    if om == result[-1][-1]:
        result[-1].append(om)
    else:
        result.append([om])
result.append(["%02d" % int(months[-1])])

print(result)

上述方法适用于长度为2或更长的列表。如果您想要/需要它们,您可以为琐碎的情况添加处理。其思想是,对于从第二个到倒数第二个条目的每个条目,如果该条目等于该子列表中的最后一个条目,则将该条目附加到result中的最后一个子列表,否则向result附加一个单例列表。

最后一项只是作为单例列表添加到结果的末尾。

此示例的输出将为:

代码语言:javascript
复制
[['04', '04'], ['05', '05', '05'], ['06'], ['07', '07'], ['08'], ['09'], ['02'], ['03'], ['04'], ['04']]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61785098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档