python - 字符串列表,想将它们分成两个列表
问题描述
我正在尝试拆分目录中的文件名字符串列表。文件是成对生成的。一个是原始的,第二个是修改的。所以列表看起来像:
files = ['data1', 'data2', 'data3', 'data1-m', 'data2-m', 'data3-m']
但这一切都被打乱了。
我想创建两个列表,其中索引彼此对应,如下所示:
original_files = ['data1','data2','data3']
modified_files = ['data1-m','data2-m','data3-m']
目前我有:
noised_files = [x for x in files if 'm' in x]
original_files = [x for x in files if not 'm' in x]
它确实拆分了列表,但它不是成对的,我想要:
>original_files[0] = 'data1'
>noised_files[0] = 'data1-m'
谢谢你。
解决方案
list-comprehension
与str.endswith()
和一起使用sorted()
:
files = ['data3', 'data1', 'data2', 'data2-m', 'data3-m', 'data1-m']
files = sorted(files)
print([x for x in files if x.endswith('m')])
print([x for x in files if not x.endswith('m')])
编辑:
也可以这样写:
noised_files = [x for x in files if x.endswith('m')]
original_files = [x for x in files if x not in noised_files]
print(original_files[0]) # data1
print(noised_files[0]) # data1-m
编辑 2:
使用filter()
:
print(list(filter(lambda x: x.endswith('m'), files)))
print(list(filter(lambda x: not x.endswith('m'), files)))
输出:
['data1-m', 'data2-m', 'data3-m']
['data1', 'data2', 'data3']
推荐阅读
- r - 如何修复“数学函数的非数字参数”
- database - Oracle DB 中的任何日志/审计表都包含用于审计目的的每日事务详细信息?
- r - 如何滞后和计算列表中每个数据框的差异?
- javascript - Datepicker CSS 已加载,但似乎未应用
- spring-boot - Gitlab ci - 工件应用程序 jar 的差异
- swift - 使用可编码从 Firebase Cloud Firestore 解码集合数组
- c# - 在c#中基于字符串参数创建类实例的生产标准
- html - 如何在模板文字字符串中插入 HTML?
- android - 为什么不调用 onActivityReenter?
- cordova - 科尔多瓦插件背景下载未安装最新版本