我对编码真的很陌生,所以我希望我能得到一个我更可能理解的答案,而不是它的效率。我有一个由字符串组成的列表,如下所示:
月份= '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’]
注意:尽管最后一个元素仍然获得了自己的列表,但它已经有了一个列表,这一点非常关键。
下面是我的开场白:
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)我得到一个问题,索引变得超出范围,如果我完成这个循环,因为我强制最后一个值。我觉得我就快到了,但如果能得到一些帮助,我会非常感激。
发布于 2020-05-14 05:43:55
如果你想自己实现它,下面是我能找到的最简单的东西:
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附加一个单例列表。
最后一项只是作为单例列表添加到结果的末尾。
此示例的输出将为:
[['04', '04'], ['05', '05', '05'], ['06'], ['07', '07'], ['08'], ['09'], ['02'], ['03'], ['04'], ['04']]https://stackoverflow.com/questions/61785098
复制相似问题