py17day02
一、python数据类型str
-str类方法:
capitalize():首字母大写
>>> 'elaine'.capitalize() 'Elaine'
自身name变量不会变,新生成一个值
>>> name = 'elaine' >>> v = name.capitalize() elaine >>> print(name,v) elaine Elaine
casefold():所有大写变小写(比lower()厉害,适用多种语言)
>>> 'Elaine'.casefold() 'elaine'
center(width, fillchar=None):文本居中
>>> 'Elaine'.center(20,'*') '*******Elaine*******'
count(sub, start=None, end=None):传入子序列在字符串中出现的次数
>>> 'Dylan&Elaine'.count('a',0,10) 2
endswith(suffix, start=None, end=None)
>>> 'Elaine'.endswith('e') True
startswith(prefix, start=None, end=None)
>>> 'Elaine'.startswith('E') True
expandtabs(tabsize=8):找到制表符(tab)进行替换(包含tab前的字符)
p = 'name:\tDylan\tElaine\nage\t29\t30'.expandtabs(20) print(p)
name: Dylan Elaine
age 29 30
find(sub, start=None, end=None):找到指定子序列索引,找不到返回-1
>>> 'Elaine'.find('n',-2,-1) 4 >>> 'Elaine'.find('r',-2,-1) -1
index(sub, start=None, end=None):找到指定子序列索引,找不到报错
format(*args, **kwargs):字符串格式化
format_map(mapping):字符串格式化
>>> tp1 = "My name:%s age:%s gender:%s"%('Elaine',30,'girl') >>> print(tp1) My name:Elaine age:30 gender:girl >>> tp2 = "My name:{0} age:{1} gender:{2}".format('Elaine',30,'girl') >>> print(tp2) My name:Elaine age:30 gender:girl >>> tp3 = "My name:{name} age:{age} gender:{gender}".format(name='Elaine',age=30,gender='girl') >>> print(tp3) My name:Elaine age:30 gender:girl >>> tp4 = "My name:{name} age:{age} gender:{gender}".format_map({'name':'Elaine','age':30,'gender':'girl'}) >>> print(tp4) My name:Elaine age:30 gender:girl
isalnum():如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
>>> 'Elaine521'.isalnum() True >>> 'Elaine@521'.isalnum() False
isalpha():如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
>>> 'Elaine'.isalpha() True >>> 'Elaine521'.isalpha() False
isdecimal(self),isdigit(self),isnumeric(self):判断是否是数字
>>> '123'.isdecimal() True >>> '123②'.isdecimal() False >>> '123②'.isdigit() True >>> '123②二'.isdigit() False >>> '123②二'.isnumeric() True
isidentifier():是否是标识符(是否可用作变量名)
>>> '9elaine'.isidentifier() False
isupper(),islower():是否全部是大,小写
>>> 'ELAINE'.isupper() True >>> 'elaine'.islower() True
lower(),upper():全部变小写,大写
isprintable():是否包含隐藏
>>> 'dylan\nelaine'.isprintable() False
isspace():是否全是空格
>>> ' '.isspace() True
join(iterable):拼接(传入可迭代元素)
>>> '|'.join('Elaine') 'E|l|a|i|n|e' >>> '|'.join(['Dylan','Elaine']) 'Dylan|Elaine'
ljust(width, fillchar=None):左填充
rjust(self, width, fillchar=None):右填充
>>> 'Elaine'.ljust(20,'*') 'Elaine**************' >>> 'Elaine'.rjust(20,'*') '**************Elaine'
maketrans(*args, **kwargs),translate(table):用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
注:两个字符串的长度必须相同,为一一对应的关系。
>>> s1 = str.maketrans('dylan','57521') >>> 'dylan'.translate(s1) '57521'
partition(self, sep):分割字符串,保留分割元素。
>>> 'E|lai|en'.partition('|') ('E', '|', 'lai|en') >>> 'E|lai|en'.rpartition('|') ('E|lai', '|', 'en')
replace(self, old, new, count=None):方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
>>> 'elaine'.replace('e','d',1) 'dlaine'
splitlines(self, keepends=None): 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
>>> 'ab c\n\nde fg\rkl\r\n'.splitlines() ['ab c', '', 'de fg', 'kl'] >>> 'ab c\n\nde fg\rkl\r\n'.splitlines(True) ['ab c\n', '\n', 'de fg\r', 'kl\r\n'] >>>
strip(chars=None):方法用于移除字符串头尾指定的字符(默认为空格,还会移除换行符等)。
>>> '\telaine\n'.strip() 'elaine'
swapcase():用于对字符串的大小写字母进行转换。
>>> 'Elaine'.swapcase() 'eLAINE'
zfill(width):指定字符串的长度。原字符串右对齐,前面填充0。
>>> 'Elaine'.zfill(20) '00000000000000Elaine'
__add__(*args, **kwargs):私有方法。
如:
s1 = 'dylan'
s2 = 'elaine'
执行s1 + s2时,执行的就是 __add__方法。
encode(encoding='utf-8', errors='strict'):方法以指定的编码格式编码字符串。errors参数可以指定不同的错误处理方案。该方法返回编码后的字符串,它是一个 bytes 对象。
-encoding -- 要使用的编码,如: UTF-8。
-errors -- 设置不同错误的处理方案。默认为 'strict',意为编码错误引起一个UnicodeError。
>>> '中文'.encode('utf-8') b'\xe4\xb8\xad\xe6\x96\x87' >>> '中文'.encode('gbk') b'\xd6\xd0\xce\xc4'
二、python数据类型int
-int类方法:
bit_length(self):当前整数的二进制表示,最少位数
6的二进制为:110
>>> age = 6
>>> age.bit_length()
3
to_bytes(self, length, byteorder, *args, **kwargs):将整数转化为16进制的字节对象(bytes,'\x'代表16进制)
-length:表示至少以多少byte表示
-byterorder:有'little','big' 参数
>>> age = 15 >>> age.to_bytes(5,byteorder='little') b'\x0f\x00\x00\x00\x00' >>> age.to_bytes(5,byteorder='big') b'\x00\x00\x00\x00\x0f'
三、python数据类型bool
空列表,空字符串,空值,0的bool值均为False
四、python数据类型list
-list类方法:
append(self, p_object):追加
>>> L1 = ['a','b','c','d'] >>> L1.append('e') >>> print(L1) ['a', 'b', 'c', 'd', 'e']
clear(self):清空
>>> L1.clear() >>> print(L1) []
copy(self):拷贝(浅拷贝)
>>> L1 = ['a','b','c','d'] >>> L2 = L1.copy() >>> print(L2) ['a', 'b', 'c', 'd']
count(self,value):计数
>>> L1 = ['a','b','c','d','a'] >>> print(L1.count('a')) 2
extend(self,iterable):扩展原列表
>>> L1 = ['a','b','c','d'] >>> L2 = L1.extend(['e','f','g','h']) >>> print(L2) None >>> print(L1) ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
index(self, value, start=None, stop=None):查找元素索引
>>> L1 = ['a','b','c','d'] >>> L1.index('a') 0
pop(self, index=None):删除并获取元素
>>> L1 = ['a','b','c','d'] >>> v = L1.pop(2) >>> print(v) c >>> print(L1) ['a', 'b', 'd']
remove(self,value):删除元素
>>> L1 = ['a','b','c','d'] >>> L1.remove('c') >>> print(L1) ['a', 'b', 'd']
reverse(self):翻转列表
>>> L1 = ['a','b','c','d'] >>> L1.reverse() >>> print(L1) ['d', 'c', 'b', 'a']
sort(self, key=None, reverse=False):排序
-key:定义一个方法,按照此方法排序
-reverse:默认为False
>>> L1 = ['aaaaa','bbb','ccccccc','dddd'] >>> L1.sort(key=len,reverse=True) >>> print(L1) ['ccccccc', 'aaaaa', 'dddd', 'bbb']
额外:
-list中元素个数
>>> L1 = ['a','b','c','d'] >>> L1.__len__() 4 >>> len(L1) 4
-insert(self, index, p_object):插入元素
>>> L1 = ['a','b','c','d'] >>> L1.insert(1,'A') >>> print(L1) ['a', 'A', 'b', 'c', 'd']
-del list[x:x]:批量删除元素
['a', 'A', 'b', 'c', 'd'] >>> del L1[1:3] >>> print(L1) ['a', 'c', 'd']
-补充内容
-range:
在python2.7中:range会直接生成list

在python3中:不会直接生成list,只有循环迭代时,才一个一个生成

# 在Python的序列中(列表和元组都是序列),都可以可以使用切片操作: sequence[start : end : step] 前面两个好理解,分别为开始索引的位置和结束索引的位置(Python中提供两种索引:从左向右 0 ..... index-1 从右向左 -1 .... -index),关键是在这个step的含义。 其实呢,step在这里表示的是切片的步长(step不能为0,默认为1): 若 step > 0, 则表示从左向右进行切片。此时,start必须小于end才有结果,否则为空。例如: s[0,: 5: 2]的结果是'ace' 若 step < 0, 则表示从右向左进行切片。 此时,start必须大于end才有结果,否则为空。列如: s[5: 0: -1]的结果是'fedcb' 那么,s[::-1]表示从右往左,以步长为1进行切片; s[::2] 表示从左往右以步长为2进行切片 Python中的range()函数和序列的这个特性非常相像。 range()函数可以说是一个生成序列的函数,例如: range(5) : 0, 1, 2, 3, 4 range(1, 5):1, 2, 3, 4 上面两个例子比较容易理解,range()函数中也有最后一个参数step,比如:range(0,5, 2)则表示0,2,4 range(5,0,-2)表示(5,3,1)可以这么来理解:首先 ,range(0, 5)会生成一列数(表示为0,1,2,3,4,5): 由于step为-2,会从右向左进行切片步长为2,依次取索引为5,3,1的数,索引为0的不包括在内。
>>> r = range(10) >>> from collections import Iterable,Iterator >>> isinstance(r, Iterator) False >>> isinstance(r, Iterable) True
一些range用法:
>>> L1 = ['a','b','c','d'] >>> for i in range(len(L1)): ... print(L1[i]) ... a b c d
>>> for i in range(1,11,2): ... print(i) ... 1 3 5 7 9
-enumerate:相比range(),enumerate会额外生成一列有序数字
>>> L1 = ['a','b','c','d'] >>> for i in enumerate(L1,100): ... print(i) ... (100, 'a') (101, 'b') (102, 'c') (103, 'd') >>> for num,ele in enumerate(L1,100): ... print(num,ele) ... 100 a 101 b 102 c 103 d
五、python数据类型tuple
-tuple类方法:
count(self, value):
>>> T1 = ('a','b','c','d','e','a','b',) >>> T1.count('a') 2
index(self, value, start=None, stop=None):获取到元素的第一个索引
>>> T1 = ('a','b','c','d','e','a','b',) >>> T1.index('a') 0
额外:元组里的元素不可修改
>>> T1 = ('a','b',['1','2','3'],'d') >>> T1[2] = 'c' #修改后报错 Traceback (most recent call last): File "<input>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>> T1[2] = ['4','5','6'] Traceback (most recent call last): File "<input>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>> T1[2][0] = ['b'] #修改后不报错 >>> print(T1) ('a', 'b', [['b'], '2', '3'], 'd')
创建元组时在最后一个元素后附加,
>>> T1 = (a)
>>> print(T1) a >>> T1 = ('a',) >>> print(T1) ('a',)
额外:
元组支持索引,切片,for循环
六、python数据类型dict
-dict类方法:
clear(self):
>>> D1 = {'a':1,'b':2,'c':3,'d':4,'e':5}
>>> D1.clear()
>>> print(D1)
{}
copy(self):
>>> D1 = {'a':1,'b':2,'c':3,'d':4,'e':5}
>>> D2 = D1.copy()
>>> print(D2)
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4}
get(self, k, d=None):
>>> v = D1.get('a') #根据key值获取指定value>>> print(v) 1 >>> v = D1.get('a1') #不存在的key不报错 >>> print(v) None >>> v = D1.get('a1',111) #不存在的key,返回设置的默认值111>>> print(v) 111
pop(self, k, d=None):
>>> D1 = {'a':1,'b':2,'c':3,'d':4,'e':5}
>>> D1.pop('b') #删除key对应的value,并获取value
2
>>> print(D1)
{'a': 1, 'c': 3, 'e': 5, 'd': 4}
>>> D1.pop('b',3) #删除key不存在时,获取设置的默认值3
3
>>> print(D1)
{'a': 1, 'c': 3, 'e': 5, 'd': 4} #删除key不存在时,不设置默认值会报错
>>> D1.pop('b')
Traceback (most recent call last):
File "<input>", line 1, in <module>
KeyError: 'b'
>>> D1 = {'a':1,'b':2,'c':3,'d':4,'e':5}
>>> D1.pop('b',3) #删除key存在,获取value
2
popitem(self):随机删除键值对,并获取删除的键值对(类型为元组)
>>> D = {'a':1,'b':2,'c':3,'d':4,'e':5}
>>> D.popitem()
('a', 1)
setdefault(self, k, d=None):增加,如果存在不作操作
>>> D.setdefault('f',6) 6 >>> print(D) {'a': 1, 'f': 6, 'b': 2, 'd': 4, 'c': 3, 'e': 5}
update(self, E=None, **F):批量增加或修改
>>> D = {'k1':'v1','k2':'v2','k3':'v3'}
>>> D.update({'k3':'VIII','k4':'v4'})
>>> print(D)
{'k3': 'VIII', 'k2': 'v2', 'k1': 'v1', 'k4': 'v4'}
fromkeys(*args, **kwargs):生成一个字典,key值为参数1,value为参数2
>>> d = dict.fromkeys(['k1','k2','k3'],[1,]) >>> print(d) {'k3': [1], 'k2': [1], 'k1': [1]}
注意:此方法生成的字典,原理是将k1,k2,k3同时指向[1,]的内存地址,故当对[1,]进行更改时,由于k1,k2,k3指向的内存地址不变,则:
>>> d = dict.fromkeys(['k1','k2','k3'],[1,]) >>> print(d) {'k3': [1], 'k2': [1], 'k1': [1]} >>> d['k2'].append(2) >>> print(d) {'k3': [1, 2], 'k2': [1, 2], 'k1': [1, 2]}
额外:
-字典可嵌套
-字典的key为不可变类型
D_test = { 'k1':'v1', #key=str 1:'v2', #key=bool 2:'v3', #key=int (1,2):'v4', #key=tuple False:'v5' #key=bool } print(D_test) {(1, 2): 'v4', 1: 'v2', 2: 'v3', 'k1': 'v1', False: 'v5'}
七、python数据类型set
-set类方法:
add(self, *args, **kwargs):
>>> s1 = {1,2,3,4,5}
>>> s1.add(5)
>>> print(s1)
{1, 2, 3, 4, 5}
>>> s1.add(6)
>>> print(s1)
{1, 2, 3, 4, 5, 6}
difference(self, *args, **kwargs):
>>> s1 = {1,2,3,4,5}
>>> s2 = {3,4,5,6,7}
>>> s1.difference(s2) #s1中存在,s2中不存在的值
{1, 2}
>>> s2.difference(s1) #s2中存在,s1中不存在的值
{6, 7}
>>> s1.difference_update(s2) #s1中存在,s2中不存在的值,清空s1并重新赋值给s1
>>> s1
{1, 2}
symmetric_difference(self, *args, **kwargs):
>>> s1 = {1,2,3,4,5}
>>> s2 = {3,4,5,6,7}
>>> s1.symmetric_difference(s2) #s1,s2中互不存在的值
{1, 2, 6, 7}
>>> s2.symmetric_difference(s1)
{1, 2, 6, 7}
intersection(self, *args, **kwargs):
union(self, *args, **kwargs):
>>> s1 = {1,2,3,4,5}
>>> s2 = {3,4,5,6,7}
>>> s1.intersection(s2) #s1,s2交集
{3, 4, 5}
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6, 7} #s1,s2并集
discard(self, *args, **kwargs):
>>> s1 = {1,2,3,4,5}
>>> s1.discard(4)
>>> s1
{1, 2, 3, 5}
update(self, *args, **kwargs):
>>> s1 = {1,2,3,4,5}
>>> s1.update({1,2,6,7})
>>> s1
{1, 2, 3, 4, 5, 6, 7}
额外:
>>> s1 = {1,2,3,4,5,[1,2]}
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> s1 = {1,2,3,4,5,(1,2)}
>>> t1 = (1,2,3,4,5,[1,2])
set不支持索引,切片
八、python数据类型互相转换
str转换list:
>>> s = 'elaine' >>> list(s) ['e', 'l', 'a', 'i', 'n', 'e']
str转换tuple:
>>> s = 'elaine' >>> tuple(s) ('e', 'l', 'a', 'i', 'n', 'e')
list转换str:
>>> li = ['e', 'l', 'a', 'i', 'n', 'e'] >>> ''.join(li) 'elaine'
list转换tuple:
>>> li = ['e', 'l', 'a', 'i', 'n', 'e'] >>> tuple(li) ('e', 'l', 'a', 'i', 'n', 'e')
list转换dict:
1、现在有两个列表,list1 = ['key1','key2','key3']和list2 = ['1','2','3'],把他们转为这样的字典:{'key1':'1','key2':'2','key3':'3'}
>>>list1 = ['key1','key2','key3'] >>>list2 = ['1','2','3'] >>>dict(zip(list1,list2)) {'key1':'1','key2':'2','key3':'3'}
2、将嵌套列表转为字典,有两种方法,
>>>new_list= [['key1','value1'],['key2','value2'],['key3','value3']] >>>dict(list) {'key3': 'value3', 'key2': 'value2', 'key1': 'value1'}
或者这样:
>>>new_list= [['key1','value1'],['key2','value2'],['key3','value3']] >>>new_dict = {} >>> for i in new_list: ... new_dict[i[0]] = i[1] #字典赋值,左边为key,右边为value ... >>> new_dict {'key3': 'value3', 'key2': 'value2', 'key1': 'value1'}
tuple转换str:
>>> tu = ('e', 'l', 'a', 'i', 'n', 'e') >>> ''.join(tu) 'elaine'
tuple转换list:
>>> tu = ('e', 'l', 'a', 'i', 'n', 'e') >>> list(tu) ['e', 'l', 'a', 'i', 'n', 'e']

浙公网安备 33010602011771号