python 数据处理 数据结构常用操作记录

列表/元组/集合/字典的区别

在这里插入图片描述

逆序遍历列表

a = [6,3,1,4,2,8] # len=6

#### 输出列表最后3个元素  #####

# 正序 【4、2、8】
for i in range(3, len(a)):
    print(a[i])

# 逆序【8、2、4】
for i in range(len(a)-1,2,-1): #(末尾处索引,前端处索引,-1)左闭右开
    print(a[i])

###### 从后往前遍历列表!!! ######
for i in range(len(a)-1, -1, -1):
    print(a[i])

字符串切割split函数

fL='123_456.csv'
a = fL.split('_') # 单个分隔符只需要调用字符串自带的split函数即可
# ['123', '456.csv']
b = re.split('[_.]', fL) # 如果想用多个分隔符来切分字符串,需要用re库中的split函数
# ['123', '456', 'csv']

列表与集合转换

集合这个数据结构不会包含重复元素,所以用集合来去重是一个很方便的操作。

myList=[1,2,2,1,3,4]
mySet=set(myList) #转化成不含重复元素的集合,直接调用set函数
saveList=list(mySet) #如果想转化成列表,直接调用list函数

将列表写入文件

把列表的元素写入txt文件中(对集合也适用):参考链接

去掉字符串末尾的换行符

直接用 str=str.replace(‘\n’,’ ') 这条语句,用空字符替换掉换行符, 返回一个新的字符串:参考链接
【replace函数默认会替换所有匹配到的地方,可以通过设置第三个参数来控制匹配次数:参考链接

判断某个元素是否在列表中并返回索引

直接用 in、not in 来判断元素 x 是否在某个列表中:参考链接

对字典排序

常用的就是对进行排序,直接用 sorted 函数,参数就是字典的名字,默认由小到大排序;
如果是对排序,就改一下 sorted 函数的参数,参考菜鸟教程的链接,切记:此时sorted函数返回的是排序后的列表!!,不是字典了。想返回字典的方法

遍历列表时,同时获取索引和值-enumerate

参考链接

lines=['a','b','c','d']
for i,line in enumerate(lines):
	print(i,line)

字典的遍历

参考链接

# 同时获取键和值-items
for key,value in myDict.items():
# 遍历键
for key in myDict:
# 遍历值
for value in myDict.values():

GPS时间戳的转化

参考链接

import time
timestamp=1443543324 #时间戳
time_local=time.localtime(timestamp) #time.struct_time(tm_year=2015, tm_mon=9, tm_mday=30, tm_hour=0, tm_min=15, tm_sec=24, tm_wday=2, tm_yday=273, tm_isdst=0)
time_formed=time.strftime("%Y-%m-%d %H:%M:%S",time_local) #2015-09-30 00:15:24

两个列表的对应位置元素相加

两个元组如果直接用加号,默认是进行连接操作。想实现对应位置元素相加的话,用 zip、map、tuple 这三个函数合起来实现:参考链接

a = [1, 2, 3]
b = [4, 5, 6]
result = [i + j for i, j in zip(a, b)]
print(result)    # [5, 7, 9]

计算两点之间的经纬度距离-geodesic

参考链接

from geopy.distance import geodesic
#(纬度1,经度1),(纬度2,经度2)
dist=geodesic((37.193462,100.1347),(37.194363,121.1348)).km  #计算公里
print(dist)

打开某个文件夹下所有文件

filePath=r'C:\Users\admin\Desktop\Experiment'  #大的文件路径
allFileNames=os.listdir(filePath)  #这个路径下的所有文件名字
for fname in allFileNames: #遍历每个文件
	curFilePath = os.path.join(filePath, fname) #拼接起来当前这个文件的路径
	
	## 1、如果是txt文件,可以按下述方式读取
	f=open(curFilePath,'r')
	lines=f.readlines()
	f.close() 
	
	## 2、如果是csv文件,可以按下述方式读取
	df=pd.read_csv(curFilePath)
	

除法保留n位小数

print(round(10/3,2))  #3.33
# round(a/b,n) #对a/b之后的结果保留n位小数 
# round(a,n) #对a这个小数保留n位

匿名函数lambda的用法

'''
# 正常的函数写法及调用形式
def f(str):
    return len(str.split()) #统计单词的个数

print(f('hello world'))
'''

# 采用匿名函数的写法
# lambda 参数:返回值

### 使用方式1
f = lambda str: len(str.split())
print(f('hello world')) #把hello world这个参数传给它

### 使用方式2
print((lambda str: len(str.split()))('hello world')) #简化了一下,其实也是把hello world这个参数传给它

### 使用方式3【将lambda函数作为参数】
List = ['hello world ya', 'hello', 'nice world', 'ni hao ya hello']
List.sort(key=lambda str: len(str.split())) #这里看似是没有给str传参,其实传了,传的是列表中的每个字符串
print(List)

### 使用方式4【三项式if、else】【其实就是方式1,对返回值做了升华】
f = lambda x: '偶数' if x%2==0 else '奇数'
print(f(8))

### 使用方式5【与map、list配合使用】
#某些情况下map函数可以简洁地替代for循环
mapObject = map(lambda x: x**2, [1,2,3,4])  #map(c1,c2) 第一个参数是某个函数A,第二个参数是A函数的参数列表,最终实现了对列表每个元素的处理
print(list(mapObject)) #[1, 4, 9, 16]
#等价写法,这种方式也很推荐
print([x**2 for x in [1,2,3,4]])

合并多个字典

a_dict = {"apple":3, "orange":5.3}
b_dict = {"banana":4, "orange":2.9}
c_dict = {"watermelon":2, "orange":10}

# 1、调用字典的update函数
merged_dict = {}
merged_dict.update(a_dict) #一次只能更新一个字典
merged_dict.update(b_dict)
merged_dict.update(c_dict)
print(merged_dict)

# 2、利用构造函数dict
merged_dict = dict(a_dict, **b_dict) #一次只能传入两个字典
merged_dict = dict(merged_dict, **c_dict)
print(merged_dict)

# 3、利用{**}直接合并多个字典【推荐使用】
merged_dict = {**a_dict, **b_dict, **c_dict}
print(merged_dict)

持续更新中……

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值