python - 如果第一个列表的最后一个元素是第二个的第一个,则合并两个列表
问题描述
我正在尝试合并两个列表,以防第二个元素等于下一个列表的第一个。
我有以下列表:
a = [[1, 2], [4, 6], [3, 4]]
我做的第一件事是对列表进行排序,以便能够比较元素:
sort_a = sorted(a, key = lambda pos: pos[0])
这给了我作为输出:
[[1, 2], [3, 4], [4, 6]]
现在我正在努力比较元素。我的推理如下:
for i, j in sort_a:
# Compare the elements from the lists I am interested in merging
# If there is a match, the two lists would be merged
if sort_a[i][1] == sort_a[i+1][0]:
# The code goes here
else:
return sort_a[i][j] # Else it would keep the original list
所以预期的输出是[[1,2],[3,6]]
.
解决方案
由于您想用i
and索引列表i+1
,i
因此最多必须是列表的长度减 2。另一个问题是您想在迭代列表时更改列表,这可能会弄乱索引号。你可以通过反向迭代索引来避免这个问题,这样当你删除一个项目时,那些尚未处理的项目的索引不会改变。
result = sort_a.copy()
for i in reversed(range(len(sort_a) - 1)):
if sort_a[i][1] == sort_a[i+1][0]:
result[i][1] = result[i+1][1]
del result[i+1]
print(result)
[[1, 2], [3, 6]]
推荐阅读
- python - 在 Python 中动态定义/更新 ctypes 结构
- php - 如何使用 Laravel JSON API?
- c - 如何区分零和负零?
- php - Wordpress 忽略“post_status”更新
- ruby-on-rails-4 - Rails 4 中的 ActiveRecord 范围可以使用什么上下文?
- r - R - openxlsx 格式 - 有没有办法用 2 色渐变格式化单个单元格?
- python - 在屏幕上发布数据
- c# - 在 Update/FixedUpdate 以外的其他功能中旋转对象
- scala - 如何从 Json schem 文件创建 DataFrame Schema
- python - 如何在 Python 中使用随机索引处理多维列表