zoukankan      html  css  js  c++  java
  • 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})
  • 相关阅读:
    most-wanted-letter
    non-unique-elements
    python组建之paramiko的简介和简单使用
    Android平台使用termux,随时随地写代码
    发现生活中数学的美,然后记录下来
    别再用Microsoft Office,改为WPS或者Latex
    office2016 vol 中文版本
    Office 2016 英文版(VOL版)下载
    选择好用的生产力工具
    使用windows(win7和win10),最好用chocolatey
  • 原文地址:https://www.cnblogs.com/czz0508/p/10699102.html
Copyright © 2011-2022 走看看