模块一:Python开发基础

1.字符串

字符串常用方法

方法描述
title(self, /)变成标题模式字符串,单词首字母大写
capitalize(self, /) -> str首字母大写
casefold(self, /) -> str大写都变成小写
swapcase(self, /)小写变大写,大写变小写
upper(self, /)全变成大写
lower(self, /)全部转换为小写
center(self, width, fillchar=’ ', /) -> str将字符串内容居中两边以fillchar填充,总长度为width
count(sub[, start[, end]]) -> int统计字符串内多少个特定字符
encode(self, /, encoding=‘utf-8’, errors=‘strict’)字符串编码
endswith(suffix[, start[, end]]) -> bool是否以特定字符串结尾
find(sub[, start[, end]]) -> int寻找特定字符串出现的下标,没找到返回-1
format(*args, **kwargs) -> str格式化输出字符串’{0}{1}{2}’.format(1,2,3),{}是占位符,’{name}’.format(name=‘Alex’)
index(sub[, start[, end]]) -> int寻找特定字符串出现的下标,没找到报错
join(self, iterable, /) -> str将可迭代对象中以字符串作为间隔拼接起来,可迭代对象中元素必须为字符串
ljust(self, width, fillchar=’ ', /)字符串左对齐,长度为width,空白以fillchar填补
rjust(self, width, fillchar=’ ', /)字符串右对齐,长度为width,空白以fillchar填补
split(self, /, sep=None, maxsplit=-1)去掉两边的sep字符串,默认去掉空格符
lstrip(self, chars=None, /)去掉左边的chars字符串,默认去掉空格符
rstrip(self, chars=None, /)去掉右边的chars字符串,默认去掉空格符
replace(self, old, new, count=-1, /) -> str将字符串中的旧字符串全部修改(默认)为新字符串
split(self, /, sep=None, maxsplit=-1) -> list将整个字符串以特定字符(sep)分割成列表,(默认以空格符分割)
rsplit(self, /, sep=None, maxsplit=-1) -> list在maxsplit输入值的时候会与split有区别
startswith(prefix[, start[, end]]) -> bool是否以特定字符串开头
zfill(self, width, /)‘’.zfill(10)不够长度的用0来填补

字符串的判断方法

方法含义
str.isdigit()判断字符是否都是数字
str.isalnum()判断字符是否都是数字或者字母
str.isalpha()判断字符是否都是字母
str.isspace()判断字符是否都是空白字符(\t、\n、\r)
str.istitle()判断字符是否首字母都大写,像标题
str.islower()判断字符是否都是小写
str.isupper()判断字符是否都是大写

string模块中的一些常用变量

import string

string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
string.digits
'0123456789'
string.hexdigits
'0123456789abcdefABCDEF'
string.octdigits
'01234567'
string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
string.whitespace
' \t\n\r\x0b\x0c'
string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'

2.列表

列表的操作

names = ['Alex','Egon','Peiqi']
#增
	#插入
names.insert(1,'hao')
	#追加
names.append('hao')
names.extend(['leo','hao'])
#删
names.pop()
names.pop(1)
names.remove('Peiqi')
names.clear()
del names[1]
del names
#改
names[1] = 'hao'
#查
'hao' in names
names.count('a')
names.index('hao')	#names.index(str,start,end)
#如果元素不在则报错:ValueError
#排序
names.sort()
#反转
names.reverse()
3.运算

逻辑运算

运算符描述
and返回值为第一个遇到的为False表达式的值
or返回值为第一个遇到的为True表达式的值
not返回True或False

身份运算符:is

a is b					# 相当于id(a)==id(b)
type('Alex')			# (<class 'str'>
type('Alex') is str		# True
type(1) is int			# True
type(1.1) is float		# True

4.【random模块】

伪随机

import random

random.random()			#[0,1)之间的小数
random.seed('asd')		#设置随机种子
random.randint(0,10) 	#返回值为0~10左闭右闭的整数
random.choice(iter)		#抽一个
random.sample(iter,int)	#不放回抽样
random.shuffle(iter)	#原位置乱序

5.实际应用
  1. 使用str的isdigit方法判断是否输入是一个数字而不是使用异常检测。
if red_ball.isdigit():
  1. 使用一连串的判断代替and语句
if 0<red_ball<33:

6.字典

创建

person = {'name':'alex','age':20}
person = dict(name='alex',age=20)
{}.fromkeys([1,2,3,4,5,6],100)	# 批量生成默认value值的字典,不加第二个参数,value默认为None

增加

names = {}
names['佩奇'] = [26,'讲师',4000]
names.setdefault('oldboy',[50,'boss',10000])	
	# 先使用names.get('oldboy'),如果返回值为None,则进行赋值,如有返回值,则不进行赋值
	# setdefault会将第二个参数返回,无论是否成功添加

删除

names.pop('alex')	# key不存在会报错 KeyError: 'alex',返回value:[26, '讲师', 4000]
names.popitem()	# 随机删除,返回元组('oldboy', [50, 'boss', 10000])
del names['alex']
del names
names.clear()

修改

  1. 覆盖:将一个字典中所有元素覆盖到另外一个字典
a = {'name':'leo'}
b = {'name':'leo','age':29}
a.update(b)		# a被覆盖
  1. 直接修改
a['name'] = 'wzh'

查找

names['bob']	# key不存在报错
names.get('bob')	# key不存在返回None
names.get('bob',-1)	# key不存在返回-1

names.keys()	# 返回所有key
names.values()	# 返回所有value
names.items()	# 返回所有key,value 

for k in names:	# 官方推荐最快遍历方式
    print(names[i])
for k,v in names.items():	# 输出每一对k,v
    print(k,v)

7.集合

注意:只能存放不可变类型数据
用途:去重和关系运算(交集、并集等)

去重

list1 = [1,1,1,1]
set1 = set(list1)	# {1}

增加

set1.add(2)
set1.add((1,2,3))

删除

set1.discard(1)	# 如果值存在则删除,不存在不报错
set1.pop()	# 随机删除并返回
set.remove(2)	# 删除一个元素,不返回,不存在则报错

查询

(1,2,3) in set1	# True

关系运算

male = {'Alex','leo','bob','Egon'}
teacher = {'Alex','Egon','black girl'}

交集

male & teacher	# {'Alex', 'Egon'}

并集

male | teacher	# {'Alex', 'Egon', 'bob', 'black girl', 'leo'}

差集

male - teacher	# {'leo', 'bob'}
teacher - male	# {'black girl'}

对称差集

male ^ teacher	# 去掉两个集合中都存在的数据{'leo', 'black girl', 'bob'}

集合的方法

方法描述返回值
A.isdisjoint(B)判断集合是否不相交bool
A.issubset(B)判断A是否是B的子集bool
A.issuperset(B)判断A是否是B的父集bool
A.difference(B)求A与B的差集A - B
A.difference_update(B)求A与B的差集,结果赋值给ANone,A = A - B
A.intersection(B)求A与B的交集A & B
A.intersection_update(B)求A与B的交集,结果赋值给AA = A & B
A.symmetric_difference(B)求A与B的对称差集A ^ B
A.symmetric_difference_update(B)求A与B的对称差集,结果赋值给ANone,A = A ^ B
A.union(B)求A与B的并集A | B

8.编码
  • unicode:2~4字节,中文占两个字节
  • utf-8:英文占一个字节,欧洲语系占两个字节,东亚占三个字节,其他及特殊字符占四个字节。
  • 内存中的编码使用unicode(python3),传输、存储要转换成utf-8,windows默认使用gbk,linux默认使用utf-8

9.文件操作

文件与内存数据结构的转换

# 把字典写入文件
f = open(filename,'w')
users = {'Alex': ['男', 18604922678],'leo':['男',18767135825]}
f.write(str(users))
f.close()
# 把文件中字典写入内存
f = open(filename,'r')
users = eval(f.readline())
f.close()
# eval(),把字符串内容当成python语句执行,可用于数据在文件中的存取

file对象的重要方法

属性、方法描述返回值
close(self, /)Flush and close the IO object.None
flush(self, /)Flush write buffers, if applicable.None
read(self, size=-1, /)Read at most n characters from stream.str
readline(self, size=-1, /)Read until newline or EOF(the end of file)str
seek(self, cookie, whence=0, /)Change stream position.int
tell(self, /)Return current stream position.int
truncate(self, pos=None, /)Truncate file to size bytes.Returns the new size.新数据从头保留到pos位置,只有w模式可以做截断操作,截断后文件指针位置不变。int
write(self, text, /)Write string to stream.Returns the number of characters written.int
readlines(self, hint=-1, /)Return a list of lines from the stream.list
writelines(self, lines, /)Write a list of lines to stream.Provided to have a line separator at each of the lines.None
nameName of file(with abspath).str
encodingEncoding of the text stream.str
closedReturn whether object was closed.bool

新文件覆盖旧文件

import os

os.replace(f1.name,f2.name)
# 相当于将f1重命名为f2,内容是原f1的内容

路径连接

file_path = os.path.join(os.path.dirname(__file__), r'res\stock_data.txt')
file_path = os.path.join(os.path.dirname(__file__), 'res','stock_data.txt')

10.md5加密

对二进制数据进行加密

import hashlib
data = '你好'.encode(encoding='utf-8')
hashlib.md5(data).hexdigest()
11.【collection模块】

namedtuple:带名字的元组

from collections import namedtuple


# namedtuple是一个函数,用来创建一个自定义的tuple对象。
# 可以使用属性名来访问元素。

Point = namedtuple('Point',['x','y'])
p = Point(1,2)
print(p.y)	# 输出2

deque:双端队列

from collections import deque

# 实现了左侧也可以追加、弹出元素的列表。
# 传统列表插入、删除元素较慢。
# 双端队列支持两侧追加、弹出元素,效率高适用于队列和栈。
d = deque(['a','b','c'])
d.appendleft('0')	# ['0','a','b','c']
d.popleft()			# '0'

defaultdict:带有默认值的字典

from collections import defaultdict

# 当使用不存在的key访问字典时,不报错而是获得默认值。
# 不用处理报错信息,方便判断。
dd = defaultdict(lambda:'N/A')
dd['key1'] = 'abc'
dd['key']	# 'N/A'

OrderedDict:有顺序的字典

from collections import OrderedDict

# OrderedDict的键按照添加顺序排列
od = OrderedDict([('a',1),('b',2),('c',3)])
od

Counter:简单计数器

from collections import Counter

# 简单计算器,其实是字典的一个子类
c = Counter()
for ch in 'programming':
	c[ch] = c[ch] + 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值