python - Python:用列表理解替换 for 循环
问题描述
我对 python 还很陌生,列表推导并不是我的强项。但是,我需要一些帮助,将嵌套的 for 循环减少为单个语句,如列表推导式。我所拥有的是:
source_file_list = ['file1', 'file2', 'file3', 'file4', 'file5', 'file6']
test_file_list = ['file1', 'file3', 'file5']
for i in range(len(source_file_list)):
for j in range(len(test_file_list)):
if test_file_list[j] in source_file_list[i]:
file_match_list.append(source_file_list[i])
break
任何帮助表示赞赏,我正在尝试摆脱“附加”
解决方案
使用集合交点:
source_file_list = ['file1', 'file2', 'file3', 'file4', 'file5', 'file6']
test_file_list = ['file1', 'file3', 'file5']
file_match_list = set(test_file_list).intersection(source_file_list)
print(file_match_list) # {'file5', 'file1', 'file3'}
推荐阅读
- java - 字母变化,我做错了什么?
- javascript - 向下滚动时使导航菜单更改颜色
- heroku - 在heroku上运行的graphql操场表现得很奇怪
- php - Woocommerce 使用 localhost base_url 时得到 401,但使用公共 ip 时成功
- nuxt.js - 如何将 polyfill 添加到 nuxt 2.0?
- database - 如何使用 DB2 SQL 将 DECFLOAT 更改为 INT?
- google-cloud-platform - 如何使用 Google Cloud 功能获取文件内容并将文件移动到不同的 Google Cloud Storage
- python - 相当于允许加权的 numpy.linalg.lstsq
- ios - 如何使用没有固定高度和固定宽度的自动布局维护圆形 uiview
- reporting-services - SSRS 表达式在文本框之间求和