ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Python数据处理典型用法
[打印本页]
作者:
金歌
时间:
2024-11-3 17:34
标题:
Python数据处理典型用法
注意:以下基于Python3
基础篇
一、数据范例
1.list中增加元素,追加元素到末了:list.
append
(‘元素’)、插入到指定的位置:list.
insert
(‘索引号’,‘元素’);删除末了的元素:list.
pop
、删除指定位置的元素:list.
pop
(‘索引号’)
2.input()返回的数据范例是
str
3.迭代/循环:
for x in ...
把每个元素代入变量x,然后执行缩进块的语句
4.dict中避免key不存在的错误2种方法,1、通过in判断key是否存在:'Jia' in dict 返回Ture或False 2、通过dict提供的get()方法:dict.get('Yannan');删除元素:dict.
pop(key)
5.set:和dict雷同,也是一组key的集合,但不存储value。由于key不能重复,以是,在set中,没有重复的key。要创建一个set,需要提供一个list作为输入集合:
s = set([1,2,3]).
添加元素:
s.add(key)
删除元素:
s.remove(key)。
set可以当作数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:交集& 并集 |
6.列表倒序方法:list = [3,5,4]
list.sort()
>>[3,4,5]
7.字符串的元素替换方法:s = 'abc' s.
replace
('a','A') >>'Abc' 谨记变量s仍是'abc' 原因是
replace
方法创建了一个新的字符串'Abc'
二、函数
1.函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:ads(-100) >>100
a = abs
a(-67) >>67
2.空函数
1 def nop():
2 pass
复制代码
pass语句什么都不做,那有什么用?现实上pass可以用来作为
占位符
,好比现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。
pass还可以用在其他语句里,好比:
1 if age >=18:
2 pass
复制代码
缺少了pass,代码运行就会有语法错误。
3.函数可以同时返回多个值,但其实就是一个
tuple
4.函数执行完毕也没有return语句时,主动return
None
5.如果有必要,可以
先对参数的数据范例做检查
6.除了正常定义的
必选参数
外,还可以使用
默认参数
、
可变参数、
关键字参数和
命名关键字参数
,使得函数定义出来的接口,不光能处理复杂的参数,还可以简化调用者的代码
7.计算x的n次方的方法,使用while循环
1 def power(x, n):
2 s = 1
3 while n > 0:
4 n = n - 1
5 s = s * x
6 return s
复制代码
8.
可变参数
计算a2 + b2 + c2 + ……
1 def calc(*numbers):
2 sum = 0
3 for n in numbers:
4 sum = sum + n * n
5 return sum
复制代码
9.
关键字参数
可变参数允许你传入0个或恣意个参数,这些可变参数在函数调用时主动组装为一个tuple。而关键字参数允许你传入0个或恣意个含参数名的参数,这些关键字参数在函数内部主动组装为一个dict
1 def person(name, age, **kw):
2 print('name:', name, 'age:', age, 'other:', kw)
复制代码
关键字参数有什么用?它可以扩展函数的功能。好比,在person函数里,我们保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。
10.
命名关键字参数
命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。
1 def person(name, age, *, city, job):
2 print(name, age, city, job)
复制代码
和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数
11.递归函数 计算阶乘
n!
1 def fact(n):
2 if n==1:
3 return 1
4 return n * fact(n - 1)
复制代码
递归函数的优点是定义简朴,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。缺点是过深的调用会导致栈溢出。
12.
切片
L[0:3]体现,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。
L = list(range(10)) >>L[:9:2] >>[0, 2, 4, 6, 8] 第三个数字是步长
13.
迭代
在Python中,迭代是通过
for ... in
来完成的
迭代dict中的key、value、key和value:
for key in dict、for value in d.values()、for k,v in d.items()
怎样判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable范例判断:
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str 是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list 是否可迭代
True
>>> isinstance(123, Iterable) # 整数 是否可迭代
False
复制代码
14.
列表天生式
>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
复制代码
还可以使用两层循环,可以天生全排列:
>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
复制代码
运用列表天生式,可以写出非常简洁的代码。例如,
列出当前目次下的所有文件和目次名
,可以通过一行代码实现:
>>> import os # 导入os模块
>>> [d for d in os.listdir('.')] # os.listdir可以列出文件和目录
复制代码
打印dict中的 key=value
,并输出一个列表:
>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> [k + '=' + v for k, v in d.items()]
['y=B', 'x=A', 'z=C']
复制代码
把
一个list中所有的字符串酿成小写:
>>> L = ['Hello', 'World', 'IBM', 'Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']
复制代码
15.
天生器
g = (x * x for x in range(10))
复制代码
>>> next(g)
0
>>> next(g)
1
复制代码
generator保存的是算法
,每次调用next(g),就计算出g的下一个元素的值,直到计算到最后一个元素,没有更多的元素时,抛出StopIteration的错误。
当然,上面这种不停调用next(g)实在是太变态了,精确的方法是使用
for循环
,因为generator也是
可迭代对象
:
>>> g = (x * x for x in range(10))
>>> for n in g:
... print(n)
复制代码
以是,我们创建了一个generator后,根本上永远不会调用next(),而是通过for循环来迭代它,并且不需要关心StopIteration的错误。
斐波拉契数列(Fibonacci),除第一个和第二个数外,恣意一个数都可由前两个数相加得到:
1, 1, 2, 3, 5, 8, 13, 21, 34, ...
1 def fib(max):
2 n, a, b = 0, 0, 1
3 while n < max:
4 print(b)
5 a, b = b, a + b
6 n = n + 1
7 return 'done'
复制代码
16.
迭代器
天生器都是Iterator对象,但list、dict、str虽然是Iterable(可迭代对象),却不是Iterator(迭代器)。
把list、dict、str等Iterable酿成Iterator可以使用iter()函数:
>>> isinstance(iter([]), Iterator)
True
>>> isinstance(iter('abc'), Iterator)
True
复制代码
凡是可作用于for循环的对象都是Iterable范例;
凡是可作用于next()函数的对象都是Iterator范例,它们体现一个惰性计算的序列;
集合数据范例如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4