一、文本内容及代码如下:
data_str = """
0,5 , 42.9 , -0.4 , 0.2 , 4.5
5,10 , 61.5 , 1.3 , 1.2 , 5.6
10,15 , 70.3 , 2.4 , 1.7 , 6.1
15,20 , 74.1 , 2.7 , 1.8 , 6.2
20,25 , 75.7 , 2.9 , 2.1 , 6.3
25,30 , 72.4 , 3 , 1.9 , 6.2
30,35 , 78.4 , 3.4 , 1.9 , 6.4
35,40 , 77.5 , 3.6 , 2.2 , 6.6
40,45 , 79.2 , 3.6 , 1.7 , 6.3
45,50 , 80.5 , 3.8 , 3.2 , 7
50,100 , 81.7 , 4.2 , 2.4 , 6.5
100,500 , 88.7 , 6.1 , 4.6 , 8.2
500,2000 , 93 , 8.8 , 8 , 9.5
"""
data_lines = data_str.strip().split('\n')
data = [tuple(map(float, line.replace(' ', '').split(','))) for line in data_lines]
print(data)
二、解读:
第1句代码:data_str.strip().split('\n')
的用是先去除 data_str
两端的空白字符,然后将其按照换行符分割成多个字符串,并返回一个字符串列表。效果如下图:
如果,想把转换后列表的每一行作为一个元组,以便于后面调用,加如下一句:
data = [tuple(map(float, line.replace(' ', '').split(','))) for line in data_lines]
第2句代码:data = [tuple(map(float, line.replace(' ', '').split(','))) for line in data_lines]
效果如下图:
第2句代码解读:
首先,data_lines
应该是一个包含多行数据的列表。对于列表中的每一行 line
,代码会执行以下操作:
-
line.replace(' ', '')
:这行代码会移除line
中的所有空格。 -
line.split(',')
:这行代码会根据逗号将line
分割成多个部分,形成一个新的列表。 -
map(float, line.replace(' ', '').split(','))
:这行代码会将上一步得到的列表中的每个元素转换为浮点数。 -
tuple(...)
:这行代码会将转换后的浮点数列表转换为一个元组。 -
data = [tuple(...) for line in data_lines]
:这行代码会将每个line
转换得到的元组添加到data
列表中。