python中必须掌握的基础数据类型及其相互转换

python中的几种读取图片的方式:点击此处

python需要掌握的图片类型间的转换:点击此处

python中常用的数据类型:int、bool、str、list、dict、tuple、set。

int:十进制转换为二进制:除2取余,逆向排列

       二进制转化为十进制:记住8位一节

常用操作方法:bit_length()获取十进制转化为二进制的最小位数

i = 42
print(i.bit_length())  ---->6

bool:零代表假,其他数字代表真

str:对字符串的操作会形成新的字符串,与原字符串没有任何关系。(不会改变元字符串)

常用操作方法:索引与切片、capitalize()、swapcase()、center()、title()、upper()、lower()、startswith()、endswith()、find()、index()、strip()、lstrip()、rstrip()、split()、rsplit()、replace()、join()、format()、isalnum()、isalpha()、isdigit()、count()、len()

索引与切片

s1 = 'peopleigreat'
print(s1[0])            ------->'p'
print(s1[-1])           ------->'t'
print(s1[0:4])          ------->'peop'
print(s1[:4])           ------->'peop'
print(s1[2:-1])         ------->'opleigreat'
print(s1[:5:2])         ------->'pol'
print(s1[-1:-3:-1])     ------->'ta'

capitalize():首字母大写,其余字母小写

s1 = 'peopleisgreat'
print(s1.capitalize())  -------->'Peopleisgreat'

swapcase():大小写反转

s1 = 'peopleisgreat'
print(s1.swapcase())  -------->'PEOPLEISGREAT'

center():在字符串中可设置长度,并且可设置填充物

s1 = 'peopleisgreat'
print(s1.center(20))       ------->'    peopleisgreat     '
print(s1.center(20), '*')  ------->'****peopleisgreat*****'

title():字符串中非字母元素隔开的每一个单词的首字母大写

s1 = 'people is*great'
print(s1.title())  ----->'People Is*Great'

upper():全部变大写

lower():全部变小写

s1 = 'peopleisgreat'
print(s1.upper())  ------>'PEOPLEISGREAT'
print(s1.lower())   ------>'peopleisgreat'

startswith():判断该字符串以某个字符或者某些字符为开头,并且可以切片,返回的是bool值

endswith():判断该字符串以某个字符或者某些字符为结尾,并且可以切片,返回的是bool值

s1 = 'peopleisgreat'
print(s1.startswith('p'))          ----->True
print(s1.startswith('po'))         ------>False
print(s1.startswith('people'))     ------>True
print(s1.startswith('i', 6, ))     ------>True

find():通过元素找索引,找到第一个元素就返回,找不到该元素就返回-1

index():和find()方法的功能几乎一样,唯一不一样的就是当找不到元素的时候就会报错

s1 = 'peopleisgreat'
print(s1.find('i'))         ------>6
print(s1.find('is'))        ------>6
print(s1.find('i', 3, -1))  ------>6
print(s1.find('y'))         ------>-1
print(s1.find('e'))         ------>1

strip():默认去除字符串前后两侧的换行符、置零符、空格,还可以去除指定字符

s1 = '  peopleisgreat   '
s2 = '  	peopleisgreat
   '
s3 = 'qwwwwwwwpeopleisgreatqqwwwtt'
s4 = 'qwwwawwwwpeopleisgreatqqwwwtt'
print(s1.strip())       ------>'peopleisgreat'
print(s2.strip())       ------>'peopleisgreat'
print(s3.strip('qwt'))  ------>'peopleisgrea'
print(s3.strip('qwt'))  ------>'awwwwpeopleisgrea'

lstrip():默认去除左端的换行符、置零符、空格,还可以去除指定字符

rstrip():默认去除右端的换行符、置零符、空格,还可以去除指定字符

split():默认以空格分割成列表,可设置分隔符和分割次数,str--->list

s1 = 'people is great'
s2 = 'people:is:great'
s3 = ':people:is:great'
s4 = ':people:is:great'
print(s1.split())        ------>['people', 'is', 'great']
print(s2.split(':'))     ------>['people', 'is', 'great']
print(s3.split(':'))     ------>['', 'people', 'is', 'great']
print(s4.split(':', 1))  ------>['', 'people:is:great']

rsplit():从右往左分割

replace():替换掉指定的字符内容,还可以指定替换的次数

s1 = 'people is great great great'
print(s1.replace('great', 'good'))    ----->'people is good good good'
print(s1.replace('great', 'good', 1)) ----->'people is good great great'

join():将字符串的每个字符通过设置的连接符连接起来,形成一个新的字符串,list--->str(前提是列表中的元素必须是字符串)

s1 = 'people is great'
s2 = ['alex', '太白', 'wusir']
print('_'.join(s1))  ----->'p_e_o_p_l_e_ _i_s_ _g_r_e_a_t'
print('_'.join(s2))  ----->'alex_太白_wusir'

format():格式化输出

msg = '我叫{},今年{},爱好{}'
msg1 = '我叫{0},今年{1},爱好{2},我依然叫{0}'
msg2 = '我叫{name},今年{age},爱好{hobby}'
print(msg.format('太白','25','美女'))                  ---->'我叫太白,今年25,爱好美女'
print(msg1.format('太白','25','美女'))                 ---->'我叫太白,今年25,爱好美女,我依然叫太白'
print(msg2.format(age='25', hobby='美女', name='太白'))---->'我叫太白,今年25,爱好美女'

isalnum():判断字符串是否由字母或数字组成

isalpha():判断字符串是否只由字母组成

isdigit():判断字符串是否只由数字组成

name='taibai123'
print(name.isalnum()) ----->True
print(name.isalpha()) ----->False
print(name.isdigit()) ----->False

count():计算字符串中某元素出现的个数,可以切片

s1 = 'alalalphahgjsgghgjsdhg'
print(s1.count('a'))   ----->4
print(s1.count('al'))  ----->3

len():这是公共方法,计算字符串的长度

s1 = 'alalalphahgjsgghgjsdhg'
print(len(s1))   ----->22

list:容器型数据类型,可以储存任意数据类型,也可以存储大量的数据。但是任何人都拥有更改它的权限,不安全。

常用操作方法:索引切片步长、(append()、insert()、extend())(pop()、remove()、clear()、del())(按照索引去改、按照切片去改、按照切片(步长)去改)(索引、切片、切片(步长))、count()、index()、sort()、reverse()、len()

索引切片步长:顾头不顾尾

s = [1, 2, 'alex', '太白']
print(s[1])    ----->2
print(s[-1])   ----->'太白'
print(s[:2])   ----->[1, 2]
print(s[::2])  ----->[1, 'alex']

append():追加

s = [1, 2, 'alex', '太白']
print(s.append('太阳'))  ----->[1, 2, 'alex', '太白', '太阳']

insert():插入

s = [1, 2, 'alex', '太白']
print(s.insert(1, '泰迪'))  ---->s = [1, 2, 'alex', '太白', '泰迪']

extend():迭代追加(要求可迭代对象)

s = [1, 2, 'alex', '太白']
print(s.extend([3, 4, 'rei'])) ----->[1, 2, 'alex', '太白', 3, 4, 'rei']

pop():按照索引去删除,有返回值,返回值是被删除的值

s = [1, 2, 'alex', '太白']
print(s.pop(0))  ----->1

remove():按照元素取删除

s = [1, 2, 'alex', '太白']
s.remove(2)     
print(s)          ----->[1, 'alex', '太白']

clear():清空

s = [1, 2, 'alex', '太白']
s.clear()
print(s)     ----->[]

del():按照索引删除,可以按照切片(步长)删除

s = [1, 2, 'alex', '太白', 'rere', 4]
del s[0]
print(s)      ----->[2, 'alex', '太白', 'rere', 4]
del s[:2]
print(s)      ----->['太白', 'rere', 4]
del s[::2]
print(s)      ----->['rere']

按照索引去改

s = [1, 2, 'alex', '太白', 'rere', 4]
s[0] = 44
print(s)           ----->[44, 2, 'alex', '太白', 'rere', 4]

按照切片去改:将切片部分内容清空,可迭代对象的每一个元素添加到这个部分

s = [1, 2, 'alex', '太白']
s[2:] = 'rere'
print(s)      ----->[1, 2, 'r', 'e', 'r', 'e']
s[:3] = [1, 2, 3, 4]
print(s)      ----->[1, 2, 3, 4, 'e', 'r', 'e']

按照切片(步长)去改:内容和空格必须一致

s = [1, 2, 'alex', '太白']
s[::2] = ['ab', 'cd']
print(s)         ----->['ab', 2, 'cd', '太白']

count():计算某元素出现的次数

s = [1, 2, 'alex', '太白', 2]
print(s.count(2))      ----->2

index():按照元素找到其对应的索引

s = [1, 2, 'alex', '太白']
print(s.index('alex'))       ----->2

sort():默认从小到大排序

s = [1, 4, 6, 2, 7, 3]
s.sort()
print(s)     ----->[1, 2, 3, 4, 6, 7]
s.sort(reverse=True)
print(s)     ----->[7, 6, 4, 3, 2, 1]

reverse():翻转

s = [1, 4, 6, 2, 7, 3]
s.reverse()
print(s)        ----->[3, 7, 2, 6, 4, 1]

len():计算列表的长度

s = [3, 7, 2, 6, 4, 1]
print(len(s))       ----->6

tuple:为了一些重要的数据不需要别人进行更改,引进了元组。它也是容器型数据类型,它只能查询,不能增删改查(在某些条件下)。如果在元组里有个元素是列表或者字典,这个列表或者字典整体是不可以更改的,但是列表或字典里面的元素是可以更改的。但是这样的方式一般不太推荐使用。它里面放的一般是固定的重要的不需要被更改的元素。

常用基本功能:索引、切片(步长)、count()、index()

索引、切片(步长):

s = (1, 2, 'alex', '太白')
print(s[1])     ----->2
print(s[:3])    ----->(1, 2, 'alex')
print(s[::2])   ----->(1, 'alex')

count():查询元素出现的次数

s = (1, 2, 'alex', '太白', '太白')
print(s.count('太白'))    ----->2

index():按照元素查询其对应的索引

s = (1, 2, 'alex', '太白', '太白')
print(s.index('太白'))    ----->3

dict:它是属于可变数据类型(dict、list、set),而不可变数据类型有(str、int、bool、tuple)。它的查询速度非常快,因为用到了哈希算法。字典的键值对是不可重复的,如果出现重复的键时,其对应的值一样的话,就合并成一个,如果其对应的值不一样,就按照最后一个进行计算。如果直接循环一个字典,默认是循环其键值。

常用操作方法:(直接增加、setdefault())(pop()、clear()、del)(按照键改、update())(按照键查、get())、keys()、values()、items()

直接增加:有此键则更改,无此键则增加

s = {'name':'太白', 'age':24, 'sex':''}
s['high'] = 175
print(s)           ----->{'name': '太白', 'age': 24, 'sex': '', 'high': 175}
s['name'] = 'alex'
print(s)           ----->{'name': 'alex', 'age': 24, 'sex': '', 'high': 175}

setdefault():有此键则不变,无此键则增加

s = {'name':'太白', 'age':24, 'sex':''}
s1 = {'name':'太白', 'age':24, 'sex':''}
s.setdefault('weight')
print(s)     ----->{'name': '太白', 'age': 24, 'sex': '', 'weight': None}
s.setdefault('name', 'alex')
print(s)     ----->{'name': '太白', 'age': 24, 'sex': '', 'weight': None}
s1.setdefault('weight', 150)
print(s1)    ----->{'name': '太白', 'age': 24, 'sex': '', 'weight': 150}

pop():按照键去删除键值对,有返回值,返回值是将要删除的值。pop中的第二个参数可以设置返回值,如果没有你要删除的键值对,但是你删除了并且不想让他报错,就设置第二个参数。所以一般推荐使用这个方法,即使没有对应的键值也不会报错。

s = {'name':'太白', 'age':24, 'sex':''}
s.pop('name')
print(s)     ----->{'age': 24, 'sex': ''}

clear():清空字典

s = {'name':'太白', 'age':24, 'sex':''}
s.clear()
print(s)     ----->{}

del:按照键值进行删除,如果没有对应的键值就会报错。

s = {'name':'太白', 'age':24, 'sex':''}
del s['name']
print(s)     ----->{'age': 24, 'sex': ''}

按照键改:同上

s = {'name':'太白', 'age':24, 'sex':''}
s['name'] = 'alex'
print(s)      ----->{'name': 'alex', 'age': 24, 'sex': ''}

updade():将括号内的所有键值对覆盖添加(相同的键覆盖,不同的键值对添加)到括号前面的字典中,并且括号内的字典保持不变。

s0 = {'name':'太白', 'age':24, 'sex':''}
s = {'name':'太白', 'age':24, 'sex':''}
s1 = {'name':'alex', 'weight':150}
s.update(s1)
s0.update(name='alex', weight=150)
print(s0)   ----->{'name': 'alex', 'age': 24, 'sex': '', 'weight': 150}
print(s)     ----->{'name': 'alex', 'age': 24, 'sex': '', 'weight': 150}
print(s1)    ----->{'name': 'alex', 'weight': 150}

按照键查:如果没有对应的键值就会报错

s = {'name':'太白', 'age':24, 'sex':''}
print(s['name'])    ----->'太白'
print(s['name1'])  ----->KeyError: 'name1'

get():如果没有对应的键值就返回None,而不会报错,它也可以设置返回键。

s = {'name':'太白', 'age':24, 'sex':''}
print(s.get('name'))              ----->'太白'
print(s.get('name1'))             ----->None
print(s.get('name1', '没有此键'))  ----->'没有此键'

 keys():产生类似于列表的容器型数据类型。不支持索引,可以转换为列表。它还可以直接进行for循环。

s = {'name':'太白', 'age':24, 'sex':''}
ret = s.keys()
print(ret)       ----->dict_keys(['name', 'age', 'sex'])
print(ret[0])    ----->TypeError: 'dict_keys' object does not support indexing
for i in ret:
    print(i)     ----->name
                       age
                       sex

values():产生类似于列表的容器型数据类型。不支持索引,可以转换为列表。它还可以直接进行for循环。

s = {'name':'太白', 'age':24, 'sex':''}
ret = s.values()
print(ret)       ----->dict_values(['太白', 24, ''])
print(ret[0])    ----->TypeError: 'dict_values' object does not support indexing
for i in ret:
    print(i)     ----->'太白'
                       24
                       ''

items():键值对,产生类似于列表的容器型数据类型。不支持索引,可以转换为列表。它还可以直接进行for循环。

s = {'name':'太白', 'age':24, 'sex':''}
ret = s.items()
print(ret)       ----->dict_items([('name', '太白'), ('age', 24), ('sex', '')])
print(ret[0])    ----->TypeError: 'dict_items' object does not support indexing
for i in ret:
    print(i)     ----->('name', '太白')
                       ('age', 24)
                       ('sex', '')

set:以上已经拥有了三个容器型数据类型:列表、字典和元组。集合的两个最主要的功能是:列表的去重和关系测试(交集、并集、差集等)。他是无序的,并且天然去重。集合里面的元素必须是不可变的数据类型。在集合里的元素不可有不可哈希的容器型数据类型, 集合是无序的。

常用操作方法:列表去重、(add()、update())(remove()、pop()、clear()、del)(for循环)、关系测试(交集(&或intersection())并集(|或union())差集(-或difference())对称差集(^或symmetric_difference()) 超集(或issuperset())子集(<或issubset())冻集合)

列表去重:

s = [1, 2, 1, 2, 3, 4, 1, 4, 5]
set1 = set(s)
s = list(set1)
print(s)      ----->[1, 2, 3, 4, 5]

add():增加一个元素

s = {'alex', 'taibai', '太白'}
s.add('tiantian')
print(s)        ----->{'alex', '太白', 'taibai', 'tiantian'}

update():迭代着增加多个元素

s = {'alex', 'taibai', '太白'}
s.update('alex')
print(s)   ----->{'e', 'l', 'a', 'x', 'alex', '太白', 'taibai'}
s.update([1, 2, 3])
print(s)   ----->{1, 2, 3, 'e', 'l', 'a', 'x', 'alex', '太白', 'taibai'}

remove():按照元素删除

s = {'alex', 'taibai', '太白'}
s.remove('alex')
print(s)      ----->{'太白', 'taibai'}

pop():随机删除,有返回值,返回值为被删除的值。

s1 = {'alex', 'taibai', '太白'}
s2 = {'alex', 'taibai', '太白'}
print(s1.pop())   ----->'alex'
print(s1)            ----->{'taibai', '太白'}
print(s2.pop())   ----->'alex'
print(s2)            ----->{'taibai', '太白'}

clear():清空

s = {'alex', 'taibai', '太白'}
s.clear()
print(s)       ----->set()

del:删除整个集合

s = {'alex', 'taibai', '太白'}
del s
print(s)        ----->NameError: name 's' is not defined

 交集:&或者intersection()

set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
print(set1 & set2)                    ----->{3, 4, 5}
print(set1.intersection(set2))        ----->{3, 4, 5}

并集:|或者union()

set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
print(set1 | set2)            ----->{1, 2, 3, 4, 5, 6, 7}
print(set1.union(set2))       ----->{1, 2, 3, 4, 5, 6, 7}

差集:-或者difference()

set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
print(set1 - set2)               ----->{1, 2}
print(set1.difference(set2))     ----->{1, 2}

对称差集:^或者symmetric_difference()

set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
print(set1 ^ set2)                      ----->{1, 2, 6, 7}
print(set1.symmetric_difference(set2))  ----->{1, 2, 6, 7}

 超集:>或issuperset()

set1 = {1, 2, 3, 4, 5}
set2 = {1, 2, 3}
print(set1 > set2)               ----->True
print(set1.issuperset(set2))     ----->True

子集:<或issubset()

set1 = {1, 2, 3, 4, 5}
set2 = {1, 2, 3}
print(set2 < set1)               ----->True
print(set2.issubset(set1))       ----->True

冻集合:集合是可变的数据类型,如果你不想让她变动,就可以通过frozenset()来实现。变成冻集合之后,就不可以对其进行增加和删除操作了。也可以对其进行for循环操作。

set1 = {1, 2, 3, 4, 5}
fro = frozenset(set1)
print(fro)            ----->frozenset({1, 2, 3, 4, 5})
原文地址:https://www.cnblogs.com/czz0508/p/10699102.html