一、python内置函数
1、filter 和list
一个列表:
fruits = ['orange', 'peach', 'durian', 'watermelon']
print(fruits[slice(1, 3)]) --最后的结果: ['peach', 'durian']
# slice(1, 3)相当于[1:3] ,也可以# slice(1, 3,2)相当于[1:3:2]
定义一个筛选函数:
def myfilter(mystr):
return len(mystr) == 6
filter函数:
fruits2 = list(filter(myfilter, fruits))
print(fruits2) --最后的结果 ['orange', 'durian']
2、分片和索引
Python中使用索引来访问序列中的某一个元素,如果要访问序列中某一定范围内的元素,可以使用分片来完成。
分片是list里面常见的操作,使用方法:list[start:End:step],可以代替for 循环的一种简单操作。
从字符串到list,再到数组都是可以使用索引和分片的。
- list
list的下标从0开始的,单个数据的话用索引标识,
索引: list[0] 就是取第一个元素,list[-1]就是取列表的最后一个元素。
分片:list[start:end],也可以使用list(start,end)来表示分片,也可以有步长的限定。 - 嵌套list
goodslist=[['Iphone', 5800], ['Mac Pro', 12000], ['Bike', 800], ['Alex Python', 89], ['Starbuck Latte', 30], ['Cap', 45], ['Air conditioning', 3000], ['Ipad', 4200]]
[g[0] for g in goodslist] #输出结果是第一列数据
- DataFrame
dic = { 'lucy':[100,19,87,90,11,56], 'tom':[89,99,93,56,80,100]}
import pandas as pd
df = pd.DataFrame(dic,index=list('ABCDEF'))
得到lucy的学习成绩: df['lucy']
得到lucy和tom的两个人的学习成绩: df[['lucy','tom']]
# 另外索引是可以进行嵌套使用的,也就是索引后可以再次进行索引
得到lucy的A和B科目学习成绩: df['lucy'][0:2]
二、函数
1、# 参数默认值
# 函数定义的时候可以哟默认值
def f1(a,b,c=1): #定义这中函数的时候,注意一定把有默认值得参数放在最后,不然会报错
return a+b+c
print(f1(0,2)) #可以传和函数定义的参数个数不同的参数。
print(f1(c=0,b=2,a=3)) #也可以点颠倒顺序
2、可变函数(参数得个数不限定)
def f2(*args):
sum = 0
for num in args:
sum += num
return sum
print((1,3,4,5))
3、关键字函数
如果关键字函数传的是字典格式的数据,那么一定要和函数之前**的个数保持一致。
如果传的是key=value格式的参数,那么直接使用函数,不用管定义的参数前面的**的个数。
三、python技巧
1、enumerate(数组组装成字典)
mapping=[]
s_list=['a','b','c']
for k,v in enumerate(s_list):
mapping[v]=k
newmap={k:v for v,k in mapping.items() }
dict_new2= dict(zip(dict_ori.values(), dict_ori.keys()))
2、列表推导式
some_tuples = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
result=set[j for x in some_tuples for j in x]
3、多层嵌套的扁平化
1)对于知道嵌套层数以及层数一致的可以使用推导式也能:
[i for u in test_list for i in u]
2)一般的嵌套数组数据可以采用递归取数:
test_list=[[[1,2],[3,4]],[[1,5]]]
result=[]
def take_out():
for i in items:
if isinstance(i,int):
result.append(i)
else:
take_out(i)
take_out(test_list)
4、map函数和for循环
import re
class cleanStr():
def test_sub(value):
return re.sub('[?!#]','',value)
def map_test(f,s):
result=[]
for i in map(f,s):
result.append(i)
return result
def clean_str(ops,states):
count=0
while count<len(ops):
states=map_test(ops[count],states)
count=count+1
return states
clean_ops=[str.strip,str.title,test_sub]
states=[' Alabama ','Georgia! ','Georgia','georgia']
cleanStr.clean_str(clean_ops,states)