Python如何将字符串对列表拆分出两个独立的数值列表
问题解决方案
你的思路是完全可行的,Python中没有独立的unzip命令,解压操作可以通过内置函数zip(*可迭代对象)实现,具体实现有两种常用方式:
方式1:简洁写法(使用zip解压)
先对每个字符串做拆分、浮点数转换,再用zip(*)解压得到两个元组,按需转列表即可:
data = ['201.3 49.6', '214.5 51.89', '201.6 43.2'] # 拆分、转格式后解压 x_tuple, y_tuple = zip(*(map(float, item.split()) for item in data)) # 转为列表格式 x = list(x_tuple) y = list(y_tuple)
运行后输出和要求完全一致:x=[201.3, 214.5, 201.6]、y=[49.6, 51.89, 43.2]
方式2:分步循环写法(更适合初学者理解)
如果对生成式、zip语法不熟悉,可以用最基础的循环逻辑实现,逻辑更直观:
data = ['201.3 49.6', '214.5 51.89', '201.6 43.2'] x = [] y = [] for item in data: # 按空格拆分单个字符串得到x、y的字符串格式 x_str, y_str = item.split() # 转浮点数后加入对应列表 x.append(float(x_str)) y.append(float(y_str))
关于unzip的说明
你想到的拆分解包逻辑是正确的,Python中zip(*可迭代对象)就是标准的解压实现:它会把传入的可迭代对象里的每个子元素按位置拆分重组,刚好符合你这个场景下把所有x值归为一组、y值归为一组的需求。
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

