-------------------------------------------------------------------------------
打开数据文件,从文件中读取数据行,由数据行创建一个列表。显示
with open('James.txt')as jaf:
data=jaf.readline()
james=data.strip().split(',')
print(james)
strip()函数和trim()函数类似
-----------------------------------------------------------------------------
Python对数据排序,有两种选择,一种是原地排序,按照指定的顺序排列,然后用排序后的数据替换原来的数据。sort()方法
还有一种是复制排序,按照指定的顺序排序,然后返回原数据的一个有序副本,原数据的顺序依然保留。sorted()BIF
data=[0,4,7,2,3]
data.sort();
print(data)
#[0,2,3,4,7]
data.sort(reverse=True)
print(data)
#[7,4,3,2,0]
print(sorted(data))
#[0,2,3,4,7]
print(sorted(data,reverse=True))
#[7,4,3,2,0]
一些例子:
按照长度排序:
L = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]
def f(x):
return len(x)
L.sort(key=f)
print(L)
结果:
[{1:9},{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6}]
L = [('b',2),('a',1),('c',3),('d',4)]
#按照第二个关键字排序
print (sorted(L, key=lambda x:x[1]))
L = [('d',2),('a',4),('b',3),('c',2)]
#先按照第二个,如相同再按照第一个关键字排序
print (sorted(L, key=lambda x:(x[1],x[0])))
结果分别是:
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
----------------------------------------------------------------------------
有时候,数据的不一致性会导致排序失败,比如我有一组数据:['2-25','2-55','2.18','2.58','2:39']本质上他们表示的是时间
def sanitize(time_string):
if '-' in time_string:
splitter='-'
elif ':' in time_string:
splitter=':'
else:
return (time_string)
(mins,secs)=time_string.split(splitter)
return (mins+'.'+secs)
下面两种方案功能相同
列表迭代:
clean_mikey=[]
for each_t in mikey:
clean_mikey.append(sanitize(each_t))
clean_mikey=[sanitize(each_t) for each_t in mikey]
---------------------------------------------------------------------------
如果列表项里面有重复项,为了删除重复项,可以用列表迭代:
unique_james=[]
for each_t in james:
if each_t not in unique_james:
unique_james.append(each_t)
#打印出前三项
print(unique_james[0:3])
更好的可以用集合删除重复项:
distances=set()
distances={10.6,10.6,10.6,7,"1s"}
print(distances)
#{10.6,'1s',7}
或者:
distances.set(james)