python - 根据python中内部嵌套元素是否相同创建新列表
问题描述
如果起始列表中的元素满足某些条件,我试图找到一种从嵌套起始列表(list1)创建新列表(list2)的方法。起始列表是这样的,
list1=[[['1','1'],['1','2']], [['2','1'],['2','3']], [['3','3'],['3','1']]]
我想将 list1 中的所有元素添加到一个新列表中,该列表由至少有 1 个具有相同编号的嵌套元素的元素组成。例如,第一个和第三个元素 ([['1','1'],['1','2']]
和[['3','3'],['3','1']]
) 都至少有一个嵌套元素 ( ['1','1'] and ['3','3']
) 具有相同的编号,第一个中的 1 和 1 ,另一个中的 3 和 3 。因此,新列表将包含 list1 中的第一个和第三个元素。
新列表应该是,
list2=[[['1','1'],['1','2']], [['3','3'],['3','1']]]
我的想法是这样接近它,
list2=[]
for i in list1:
for i in i:
if i[0]==i[1]:
list2.append(i)
然而,这只给出了,
list2=[['1','1'], ['3','3']]
这不正是我想要的。任何有关如何解决此问题的帮助,或者如果有更好的方法,将不胜感激。
解决方案
更改您的第二个循环变量,您将覆盖内部循环中外部循环计数器的值:
for i in list1:
for j in i:
if j[0] == j[1]:
list2.append(i)
如果内部列表有超过 1 个元素,您可以通过以下方式检查所有元素是否相同:len(set(j)) == 1
。
此外,如果列表满足条件一次,您应该break
从内部循环开始,否则您最终会重复,如果它包含具有相同值的多个内部列表,则一次又一次地插入相同的列表。
推荐阅读
- jquery - jQuery 延迟加载无法与 jQuery 数据表一起正常工作
- python - 如何去除 Pandas 系列中的所有非数字字符
- exception - jax-rs 异常映射器实现问题
- javascript - 使用 Javascript 的表格内容的正则表达式
- powershell - Azure DevOps 中的 PowerShell 任务出错:术语“powershell.exe”未被识别为名称
- python - GUI 在工作人员的睡眠中冻结
- xml - 如何在 Android Studio 中将我的 toolBar 和 NavigationView 与我的 TabLayout 合并?
- makefile - 我可以让删除中间文件吗?
- ios - 在 Swift 5 中将数据从 UIPickerView 传递到 UIViewController
- java - Append to File & Read from File, but nothing happens