python - 在列表列表中查找不完全匹配
问题描述
假设我有一个列表列表,例如
new_list=[[1,2,3],
[9,1,6],
[7,3,4]]
我想做类似的事情
n=new_list.index([7,:,4])
我想
n==2
因为确实,
new_list[2]==[7,3,4]
我希望这个例子能说明我的观点,我想在不指定要找到的完整列表的情况下查找列表列表是否包含某个列表。
解决方案
可以定义一个部分“匹配”函数,其中None
匹配所有,然后用于next
查找第一个部分匹配(类似于什么index
,只查找第一个匹配):
pMatch = lambda l1, l2: all([x[0] == x[1] or x[0] == None for x in zip(l1, l2)])
# examples of partial matches
pMatch([1, 2, None], [1, 2, 3])
# True
pMatch([1, 2, 4], [1, 2, 3])
# False
new_list = [[1, 2, 3], [9, 1, 6], [7, 3, 4]]
l = [7, None, 4]
next(i for i in range(len(new_list)) if pMatch(l, new_list[i]))
# 2
在一行中:
next(i for i in range(len(new_list)) if all([x[0]==x[1] or x[0]==None for x in zip(l, new_list[i])]))
# 2
(假设所有列表的长度相同)
推荐阅读
- java - Netbeans 和代号一
- javascript - 进口的
组件未使用 GraphQL 和 ReactJS 定义 - python - SyntaxError: invalid syntax 为什么会出现这样的错误?
- html-table - 内部柱填充 mailchimp
- awk - 需要帮助使用 awk 或类似工具来打印/输出 JSON 文件的部分行
- asp.net - 在gridview asp.net中显示具有特定值的行数
- java - Groovy JDK 11 错误!源单元“FileUpload.groovy”中“语义分析”阶段的异常
- javascript - 按钮“选择”以在单个视图中使用两个模型将数据过滤到另一个数据表
- javascript - 在 React Native 的 ScrollView 中滚动 FlatList
- javascript - Next.js:_next/webpack-hmr 请求 404