[英]Separating mixed float/string in same element in python list
我有一个这样的列表
A = [14, 15.2, '22.6g', '27.28g', '10g', '15.2R', '12.4k']
我想将列表 A 分成两个列表,例如
B = [14, 15.2, 22.6, 27.28, 10, 15.2, 12.4]
C = ['NA', 'NA', 'g', 'g', 'g', 'R', 'k']
如果数字和字母之间没有某种分隔符,我不确定如何完成此操作。
假设单位始终是一个字符长,您可以使用如下列表推导式:
B, C = map(list, zip(*[[float(x[:-1]), x[-1]] if isinstance(x, str) else [x, 'NA'] for x in A]))
Output:
[14, 15.2, 22.6, 27.28, 10.0, 15.2, 12.4]
['NA', 'NA', 'g', 'g', 'g', 'R', 'k']
如果单位长度超过 1 个字符,我们可以使用splitter
符 function:
def splitter(x):
num, unit = '', ''
for i in x:
if i.isdigit() or i=='.':
num += i
else:
unit += i
return [float(num), unit]
B, C = map(list, zip(*[splitter(x) if isinstance(x, str) else [x, 'NA'] for x in A]))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.