python - 将项目添加到列表中的特定位置
问题描述
x=len(sorted_list)
z=1
for y in range (2,x):
if sorted_list[y][1]=="0" and len(sorted_list[y])>3:
z+=1
sorted_list.insert(y,'Message '+ str(z))
x+=1
else:
continue
我有一个名为“sorted_list”的列表。我想将一些项目添加到列表中,但我遇到了问题。当我尝试此代码时,它会变为无穷大。我想按第 0 个索引对数字进行分组。我有这样的输入:
[['65', '0', 'Hello'],
['65', '1', 'world'],
['78', '0', "what's"],
['78', '1', 'up']]
我想要这样的输出:
Message 1
65 0 Hello
65 1 world
Message 2
78 0 what's
78 1 up
解决方案
一般来说,在迭代列表时尝试修改列表并不是一个好主意,因为这很容易让自己感到困惑。由于您只想打印散布有额外消息的列表内容,我认为最好不要修改列表并在迭代时打印消息。
根据特定标准(在本例中为每个列表的第 0 个索引)对事物进行分组的简单方法是使用itertools.groupby
:
>>> from itertools import groupby
>>> for i, (_, group) in enumerate(groupby(sorted_list, lambda i: i[0])):
... print(f"Message {i+1}")
... for line in group:
... print(" ".join(line))
...
Message 1
65 1 Hello
65 2 world
Message 2
78 2 what's
78 3 up
推荐阅读
- unix - 仅在特定位置用下划线替换空格,使用 sed
- php - “Symfony\Component\Debug\Exception\FatalThrowableError”
- python - 使用循环从数据框中绘制子图中的滚动平均值
- html - 我有六个带有名称的图像,我希望它们并排在页脚中
- asp.net-core - 在 ASP.NET Core 3.x MVC 中使用 nameof() 和 Url.Action() 和异步方法
- r - 在嵌套函数中修改变量顺序
- python-3.x - 我的 Python LOOP 无法正确打印端口号的问题
- php - 我正在尝试将docker用于带有ngnix的php5.6,但配置存在问题
- c# - 什么是 System.Web.Mvc.WebViewPage 以及我的视图文件如何继承它?
- vba - VBA for Powerpoint:通过选择另一个 Powerpoint 中的按钮来更改幻灯片