python - 使用 Python 分离列表数据
问题描述
我有一个多个字符串的列表),我想将它们分开:
主列表:
[
GENERAL NOTES & MISCELLANEOUS DETAILS_None_None_None,
STR_XX_XX_0001,
STR_XX_XX_0002,
STR_XX_XX_0003,
GENERAL ARRANGEMENT_None_None_None,
STR_XX_XX_10001.0,
STR_XX_XX_10002.0,
STR_XX_XX_10003.0,
STR_XX_XX_10004.0,
STR_XX_XX_10005.0,
STR_XX_XX_10006.0
]
如果"_None_None_None"
在主列表中找到字符串,它可以将此数据添加到新的空列表中,并将剩余STR_XX_XX_0001
值添加到另一个列表中,直到找到另一个带有“_None_None_None”的字符串并执行相同操作。
我已经尝试过自己,但是我认为当它找到下一个带有"_None_None_None"
. 只是想办法,不确定逻辑是否正确。
empty1 = []
empty2 = []
for i in MainList:
if "_None_None_None" in i:
empty1.append(i)
# Need help on hear onwards
else:
while "_None" not in i:
empty2.append(i)
break
我期待输出结果在两个列表中。像这样的东西:
清单 1:
[
GENERAL NOTES & MISCELLANEOUS DETAILS_None_None_None,
GENERAL ARRANGEMENT_None_None_None
]
清单 2:
[
[STR_XX_XX_0001,STR_XX_XX_0002,STR_XX_XX_0003],[STR_XX_XX_10001.0,STR_XX_XX_10002.0,STR_XX_XX_10003.0,STR_XX_XX_10004.0,STR_XX_XX_10005.0,STR_XX_XX_10006.0]
]
List2 是带有子列表的列表
解决方案
你让它有点太复杂了,你可以让列表在没有内部 while 循环的情况下一直运行。只需为每个元素做出决定,因为它显示在循环中:
empty1 = []
empty2 = []
for i in MainList:
if "_None_None_None" in i:
empty1.append(i)
else:
empty2.append(i)
这将为您提供两个列表:
> empty1
> ['GENERAL NOTES & MISCELLANEOUS DETAILS_None_None_None',
'GENERAL ARRANGEMENT_None_None_None']
> empty2
> ['STR_XX_XX_0001',
'STR_XX_XX_0002',
'STR_XX_XX_0003',
'STR_XX_XX_10001.0',
'STR_XX_XX_10002.0',
'STR_XX_XX_10003.0',
'STR_XX_XX_10004.0',
'STR_XX_XX_10005.0',
'STR_XX_XX_10006.0']
编辑基于评论
如果评论者是正确的,并且您想将非 NONE 值分组到单独的列表中,这是itertools.groupby
. 它将以方便、有效的方式为您创建组,并且您的循环看起来几乎相同:
from itertools import groupby
empty1 = []
empty2 = []
for k, i in groupby(MainList, key = lambda x: "_None_None_None" in x):
if k:
empty1.extend(i)
else:
empty2.append(list(i))
这将为您提供相同的结果empty1
,但empty2
不会是列表列表:
[['STR_XX_XX_0001', 'STR_XX_XX_0002', 'STR_XX_XX_0003'],
['STR_XX_XX_10001.0',
'STR_XX_XX_10002.0',
'STR_XX_XX_10003.0',
'STR_XX_XX_10004.0',
'STR_XX_XX_10005.0',
'STR_XX_XX_10006.0']]
推荐阅读
- c# - Xamarin 计算机视觉
- c# - 将 C# 项目合并到单个类文件中
- flutter - 显示键盘时如何拦截颤动的后退按钮
- google-tag-manager - 做 ”!!” 在 GTM 脚本中有特殊含义吗?
- android - 如何在自定义警报对话框中刷新内容/UI
- python - Python 脚本在 IDLE 中运行,但不在 pycharm 中
- matlab - Matlab alphaShape 双精度到单精度以防止内存不足错误
- google-cloud-platform - Google Cloud Identity Aware Proxy (IAP) 注销在其他选项卡中不起作用
- python - 如何在 PyTorch 中获取张量的值?
- java - 使用正则表达式,在 Java 中使用保留字符