zoukankan      html  css  js  c++  java
  • 基础数据类型的整理

    基础数据类型

    一、数字int

    数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以:

    #bit_length() 当十进制用二进制表示时,最少使用的位数
    v = 11
    data = v.bit_length()
    print(data)

    二、字符str

    1.索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。

    2.切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾腚)。

    a = 'ABCDEFGHIJK'
    print(a[0:3])
    print(a[2:5])
    print(a[0:]) #默认到最后
    print(a[0:-1]) #-1就是最后一个
    print(a[0:5:2]) #加步长
    print(a[5:0:-2]) #反向加步长

    3.字符串的常用方法

    #captalize,swapcase,title
    print(name.capitalize()) #首字母大写
    print(name.swapcase()) #大小写翻转
    msg='egon say hi'
    print(msg.title()) #每个单词的首字母大写
    
    # 内同居中,总长度,空白处填充
    ret2 = a1.center(20,"*")  
    print(ret2)
    
    #数字符串中的元素出现的个数。
    # ret3 = a1.count("a",0,4) # 可切片
    # print(ret3)
    
    a2 = "hqw	"
    #	前面的补全
    # 默认将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个,如果tab键前面的字符长度超过8个不足16个则补全16个,以此类推每次补全8个。
    ret4 = a2.expandtabs()
    print(ret4)
    
    a4 = "dkfjdkfasf54"
    #startswith 判断是否以...开头
    #endswith 判断是否以...结尾
    # ret4 = a4.endswith('jdk',3,6)  # 顾头不顾腚
    # print(ret4)  # 返回的是布尔值
    # ret5 = a4.startswith("kfj",1,4)
    # print(ret5)
    
    #寻找字符串中的元素是否存在
    # ret6 = a4.find("fjdk",1,6)
    # print(ret6)  # 返回的找到的元素的索引,如果找不到返回-1
    
    # ret61 = a4.index("fjdk",4,6)
    # print(ret61) # 返回的找到的元素的索引,找不到报错。
    
    #split 以什么分割,最终形成一个列表此列表不含有这个分割的元素。
    # ret9 = 'title,Tilte,atre,'.split('t')
    # print(ret9)
    # ret91 = 'title,Tilte,atre,'.rsplit('t',1)
    # print(ret91)
    
    #format的三种玩法 格式化输出
    res='{} {} {}'.format('egon',18,'male')
    res='{1} {0} {1}'.format('egon',18,'male')
    res='{name} {age} {sex}'.format(sex='male',name='egon',age=18)
    
    #strip
    name='*egon**'
    print(name.strip('*')) 
    print(name.lstrip('*'))
    print(name.rstrip('*'))
    
    #replace
    name='alex say :i have one tesla,my name is alex'
    print(name.replace('alex','SB',1))
    
    #####is系列
    name='jinxin123'
    print(name.isalnum()) #字符串由字母或数字组成
    print(name.isalpha()) #字符串只由字母组成
    print(name.isdigit()) #字符串只由数字组成
    #公共方法
    公共方法:
    s = 'aasfhfsaflf'
    len()  #总个数
    print(len(s))
    count  #计算某些元素出现的个数,可切片
    c1 = s.count('f')
    print(c1)

    三、bool值

    布尔值就两种:True,False。就是反应条件的正确与否。

    真   1   True。

    假   0   False。 

    四、列表list

    列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:

    li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]

    列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。

    1.增

    li = [1,'a','b',2,3,'a']
    li.insert(0,55) #按照索引去增加
    print(li)
    li.append('aaa') #增加到最后
    li.append([1,2,3]) #增加到最后
    print(li)
    
    li.extend(['q,a,w']) #迭代的去增
    li.extend(['q,a,w','aaa'])
    li.extend('a')
    li.extend('abc')
    li.extend('a,b,c')
    print(li)

    2.删

    l1 = ['wusir', True, 'alex', 'laonanhai', 'ritian', 'taibai']
    #pop 按照索引去删除, 有返回值
    ret = l1.pop(0)
    print(ret)
    print(l1)
    
    #remove 按照元素删除
    l1.remove('alex')
    print(l1)
    
    #clear 清空列表
    l1.clear()
    print(l1)
    
    # del
    #1,在内存级别删除列表
    del l1
    print(l1)
    #2,按照索引删除。
    del l1[2]
    print(l1)
    #3,切片删除+步长。
    del l1[:-1]
    print(l1)

    3. 改

    #1,按照索引去改。
    l1[0] = '肖锋'
    print(l1)
    l1[-1] = '男神'
    print(l1)
    #2,按照切片去改,先将切片的区域内的内容全部删除,在迭代着添加内容。
    l1[:3] = '范德萨发给ghfkhgh;'
    l1[:3] = [1111, 2222, 3333, 4444]
    print(l1)

    4.查

    # 按照索引切片去查
    #for循环
    # for i in l1:
    #     print(i)

    5.公共方法

    len 个数
    cou = len(l1)
    print(cou)
    
    count 元素个数
    print(l1.count('taibai'))
    
    index 通过元素找索引
    print(l1.index('alex', 3))
    
    l2 = [1, 3, 5, 9, 7, 6, 2, 4]
    sort 从小到大,正序排序
    l2.sort()
    print(l2)
    sort 从大到小,倒序排序
    l2.sort(reverse=True)
    print(l2)
    
    翻转 reverse
    l2.reverse()
    print(l2)

    列表的嵌套

    l1 = ['wusir', 'alex', [99, ' taibai', '98'], 21]
    # 1, 将wusir变成全部的大写。
    # l1[0] = 'WUSIR'
    # print(l1)
    # print(l1[0].upper())
    # l1[0] = l1[0].upper()
    # print(l1)
    
    # 2,将‘taibai'变成首字母大写,其他字母小写,放回原处。
    # print(l1[2])
    # l2 = l1[2]
    # l2[1] = l2[1].strip().capitalize()
    # l1[2][1] = l1[2][1].strip().capitalize()
    # print(l1)
    # l1[2].append('舒淇')
    # print(l1)
    # 3,用数字的相加将99 变成 字符串的 '100'.
    # l1[2][0] = str(l1[2][0] + 1)
    # print(l1)
    # 4,字符串的'98' 变成数字的100.
    # l1[2][2] = int(l1[2][2]) + 2
    # print(l1)
    在循环一个列表时,最好不要改变列表的大小,会影响你的最终结果。
    l1 = [111, 222, 333, 444, 555, ]
    del l1[1::2]
    print(l1)
    
    # 倒着删除。
    for index in range(len(l1)-1, -1, -1):
        if index % 2 == 1:
             del l1[index]
    print(l1)

    五、字典dict

    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

      字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

    1.增

    dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'}
    dic['sex'] = 'LaddyBoy'
    dic['name'] = 'Alex'  有则覆盖,没有就添加
    dic.setdefault('sex')
    dic.setdefault('sex', 'Laddyboy') 有则不变,无则添加。
    dic.setdefault('name', 'alex')
    print(dic)

    2.删

    print(dic.pop('age'))  # 有返回值,返回的是键对应的值
    print(dic.pop('age1', '没有此键...'))
    print(dic)
    
    dic.clear() 清空字典
    print(dic)
    
    print(dic.popitem())  # 随机删除,有返回值,返回值为元组,里面是删除的键值对。
    print(dic)
    
    del
    1,删除整个字典
    del dic
    2,按照键删除键值对
    del dic['name']
    print(dic)

    3.改

    1, dic['name'] = 'Alex'  有则覆盖,没有就添加
    update 两个字典的更新
    dic = {"name": "jin", "age": 18, "sex": "male"}
    dic2 = {"name": "alex", "weight": 75}
    dic2.update(dic)  # 将dic里面的所有键值对 覆盖添加到dic2中,dic不变
    print(dic)  # {'name': 'jin', 'age': 18, 'sex': 'male'}
    print(dic2)  # {'name': 'jin', 'weight': 75, 'age': 18, 'sex': 'male'}

    4.查

    1,dic['name']
    print(dic['name1'])
    
    2,dic.get('name')
    print(dic.get('name'))
    print(dic.get('name1'))
    print(dic.get('name1', 'sb没有此键'))
    
    #for循环查询
    dic.keys(), dic.values(), dic.items()  #类似于list但不是list的类型。
    print(dic.keys(),type(dic.keys()))
    for key in dic.keys():
        print(key)
    l_key = list(dic.keys())
    print(l_key)
    
    for value in dic.values():
        print(value)
    
    l_value = list(dic.values())
    print(l_value)
    print(dic.items())

    字典的嵌套

    # dic = {
    #     'name_list': ['碗蓉', '俊俊', '爽妹'],
    #     'status': None,
    #     'personal_msg': {
    #         'name': '反面教材',
    #         'age': 25,
    #         'hobby_list': ['抽烟', '喝酒', '烫头'],
    #     }
    # }
    
    # 1,给dic添加一个键值对,学校:老男孩
    # dic['学校'] = '老男孩'
    # print(dic)
    # 2,将status对应的值改成True
    # dic['status'] = True
    # print(dic)
    # 3,给name_list对应的列表追加一个元素:平平
    # print(dic['name_list'])
    # dic['name_list'].append('平平')
    # print(dic)
    # 4,给personal_msg对应的字典添加一个键值对sex:男
    # dic2 = dic['personal_msg']
    # dic2['sex'] = '男'
    # print(dic)
    # dic['personal_msg']['sex'] = '男'
    # print(dic)
    # 5,将hobby_list 对应的列表中的烫头改成唱歌。
    dic['personal_msg']['hobby_list'][-1] = '唱歌'
    print(dic)
    在循环dict中,最好不要改变dict的大小,会影响结果或者报错
    dic = {'k1': 'v1', 'k2': 'v2','k3': 'v3','name': 'alex'}
    for i in dic:
        if 'k' in i:
            del dic[i]
    print(dic)
    
    
    l1 = []
    for key in dic:
        if 'k' in key:
            l1.append(key)
    # print(l1)
    for key in l1:
        del dic[key]
    print(dic)
    dic = dict.fromkeys('abc', 666)
    print(dic)
    dic = dict.fromkeys([11, 22, 33], 666)
    print(dic)
    dic = dict.fromkeys([1, 2, 3], [])
    dic[1].append(666)
    print(dic)
    
    C:PythonPython36python3.exe "D:/老男孩12期笔记/day07/day07课堂笔记/day07/02 数据类型的补充.py"
    {'a': 666, 'b': 666, 'c': 666}
    {11: 666, 22: 666, 33: 666}
    {1: [666], 2: [666], 3: [666]}
    
    Process finished with exit code 0

    六、元组tuple

    元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")

    # tu = (11, 22, 33, 44, 55)
    #索引,切片,步长
    # print(tu[0])
    # print(tu[:3:2])
    # for i in tu:
    #     print(i)
    # index  len  count
    tu1 = ('wusir', 'alex', [22, 44, 'taibai'],)
    # tu1[-1].append('女神')
    # print(tu1)
    # l1 = [22,33]
    # l1.append(tu1)
    # # print(l1)
    # l1.clear()
    # print(l1)
    # del tu1
    # print(tu1)
    # l2 = [1,('wusir', 'alex', [22, 44, 'taibai'],)]
    # l2.clear()
    # print(l2)
    元组里面如果只有一个元素且没有逗号,则该数据的数据类型与里面的元素相同。
    tu1 = ('laonanhai')
    tu2 = ('laonanhai',)
    print(tu1, type(tu1))
    print(tu2, type(tu2))
    
    tu1 = (1)
    tu2 = (1,)
    print(tu1, type(tu1))
    print(tu2, type(tu2))
    
    tu1 = ([1, 2, 3])
    tu2 = ([1, 2, 3],)
    print(tu1, type(tu1))
    print(tu2, type(tu2))

    七、集合set

    集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:

      去重,把一个列表变成集合,就自动去重了。

      关系测试,测试两组数据之前的交集、差集、并集等关系。

    1,集合的创建。

    set1 = set({1,2,'barry'})
    set2 = {1,2,'barry'}
    print(set1,set2)  # {1, 2, 'barry'} {1, 2, 'barry'}
    
    #空集合表示方法为 
    set()

    2.集合的增

    # add
    set1 = {'alex','wusir','ritian','egon','barry'}
    set1.add('景女神')
    print(set1)
    
    #update:迭代着增加
    set1.update('A')
    print(set1)
    set1.update('老师')
    print(set1)
    set1.update([1,2,3])
    print(set1)

    3.集合的删

    set1 = {'alex','wusir','ritian','egon','barry'}
    
    set1.remove('alex')  # 删除一个元素
    print(set1)
    
    set1.pop()  # 随机删除一个元素
    print(set1)
    
    set1.clear()  # 清空集合
    print(set1)
    
    del set1  # 删除集合
    print(set1)

    4.集合的查

    #for循环
    for i in set1:
         print(i)

    5.集合的交集并集等操作

    1.交集(&  或者 intersection)

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

    2.并集(| 或者 union)

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

    3.差集(- 或者 difference)

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

    4.反交集 (^ 或者 symmetric_difference)

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

    5.子集与超集

    set1 = {1,2,3}
    set2 = {1,2,3,4,5,6}
    
    print(set1 < set2)
    print(set1.issubset(set2))  # 这两个相同,都是说明set1是set2子集。
    
    print(set2 > set1)
    print(set2.issuperset(set1))  # 这两个相同,都是说明set2是set1超集。

    八、其他(for,enumerate,range)。

    1.for循环:用户按照顺序循环可迭代对象的内容。

    msg = '老男孩python是全国范围内最好的python培训机构'
    for item in msg:
        print(item)
    
    li = ['alex','银角','女神','egon','太白']
    for i in li:
        print(i)
    
    dic = {'name':'太白','age':18,'sex':'man'}
    for k,v in dic.items():
        print(k,v)

    2.enumerate:枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),

    enumerate将其组成一个索引序列,利用它可以同时获得索引和值。

    li = ['alex','银角','女神','egon','太白']
    for i in enumerate(li):
        print(i)
    for index,name in enumerate(li,1):
        print(index,name)
    for index, name in enumerate(li, 100):  # 起始位置默认是0,可更改
        print(index, name)

    3.range:指定范围,生成指定数字。

    range 当做自定义的数字范围列表,
    满足顾头不顾腚,可以加步长,与for循环结合使用。
    for i in range(0, 101):  #[0,1,2,3,....100]
        print(i)
    for i in range(11):  # [0,1,2,3,....10]
        print(i)
    for i in range(0, 101, 3):
        print(i)
    for i in range(10, 0, -1):
        print(i)
    l1 = [22, 33, 33, 33, 66, 77, 88, 99]
    for i in l1:
        print(l1.index(i))
    for i in range(len(l1)):
        print(i)
    l1 = ['wusir', 'alex', [99, ' taibai', '98'], 21]
    for i in l1:
        if type(i) == list:
            for j in i:
                print(j)
        else:print(i)
  • 相关阅读:
    LeetCode15 3Sum
    LeetCode10 Regular Expression Matching
    LeetCode20 Valid Parentheses
    LeetCode21 Merge Two Sorted Lists
    LeetCode13 Roman to Integer
    LeetCode12 Integer to Roman
    LeetCode11 Container With Most Water
    LeetCode19 Remove Nth Node From End of List
    LeetCode14 Longest Common Prefix
    LeetCode9 Palindrome Number
  • 原文地址:https://www.cnblogs.com/wj12312/p/9003195.html
Copyright © 2011-2022 走看看