美文网首页
py的一些基础

py的一些基础

作者: 代码小小白 | 来源:发表于2021-03-23 19:10 被阅读0次

    一、while循环:

    while 条件:
      循环体
    

    二、预算符与他的优先级
    优先级从高到低:
    1.正负号:+X , -X
    2.乘除法和取余数:* / %
    3.加、减法:+ -
    4.移位运算:>> , <<
    (左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。
    右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数)
    5.按位与运算: &
    6.按位异或运算:^ (按位异或运算符:当两对应的二进位相异时,结果为1)
    7.按位或:"|"
    8.比较: <,<=,>,>=,!=,==
    9.同一性测试: is not, not
    10 .成员测试:in, not in
    11 .逻辑运算符: not
    12 .逻辑运算符:and
    13.逻辑运算符:or
    14.Lambda #运算优先级最低

    思考题:

    print(1 and 2 or 3 and 4)
    
    #输出 2
    # 先计算and,"x and y" 如果 x 为 False,x and y 返回 False,否则返回y的值;
    后计算or, "x or y" 如果 x为真则返回x的值,否则返回y的值
    

    三、字符串、列表、字典的操作汇总
    1)字符串和列表相通的操作
    ① 切片和按索引查找

    s1 = "abcdefg"
    L1=[1,2,3,4,5,6,7,8]
    # 按索引查找
    s = s1[1] # b
    s = s1[-1] # g
    l = L1[1] # 2
    l = L1[-1] # 8
    ###切片
    #正序
    s = s1[1:3] # 顾头不顾尾,默认步长1 "bc"
    s = s1[1:6:2] #步长为2, "bdf"
    l = L1[1:3] # [2,3]
    l = L1[1:6:2] # [2,4,6]
    #倒序
    s = s1[-1:-6:-1] # gfedc
    l = L1[-1:-6:-1] # [8, 7, 6, 5, 4]
    

    2)字符串常用操作方法
    ① upper lower 字符串大小写
    ② replace 替换字符串

    s1="abcdabcdabcdabcd"
    s2 = s1.replace("abc", "-") # -d-d-d-d 默认是全部替换的
    s3 = s1.replace("abc", "-", 2) #-d-dabcdabcd 替换两次
    

    ③ strip:
    去除字符串首尾的 空白(空格、/t 、/n)
    也可以去除指定字符序列
    补充:lstrip 去除左边的字符串
    rstrip 去除右边的字符串

    s1 = "  123 "
    s2 = s1.strip() # "123"
    s3 ="qwerer成r果qweq"
    s4 = s3.strip("qe") # werer成r果qw  去除的是qe字符序列,q,e,qe, eq, qqq等都算
    

    ④ split:
    默认按空格分割,返回一个列表。
    也可以按指定的字符分割,也是返回一个列表。

    s1 = "a b c"
    s2 = s1.split() # ["a","b","c"]
    s3 = "a:b:c"
    s4 = s3.split(":") # ["a","b","c"]
    

    ⑤ join :
    连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串,元素必须是字符串

    s1 = "abc"
    s2 = "-".join(s1) # a-b-c
    L1=["a","b","c"]
    s3 = "-".join(s1) # a-b-c
    

    ⑥ count:
    计算字符串中某个字符出现的次数,可以选择从第几位开始和第几位结束,索引开始为0

    s1="aaaabbbbcccc"
    n = s1.count("a") # 4
    n2 = s1.count("a", 1,3) # 2, 同样是顾首不顾尾
    

    ⑦ format : 格式化输出
    ⑧ is 系列:
    isalnum():字符串是否由字母或数字组成
    isalpha(): 字符串是否只由字母组成
    isdecimal():字符串是否只由十进制组成

    3)列表的增删改查,深浅拷贝
    增:
    ① append:在列表末尾追加
    ② extend:在末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
    ③ insert:将指定对象插入列表的指定位置
    ***遇到的坑,以上三个函数没有返回值!!!

    # 以append为例子
    # 错误的写法,返回None
    l = [1,2,3,4]
    l1 = l.append(5) # l1返回None
    #  如果需要l1有值,需要先copy
    l1 = l.copy()
    l1.append(5) #此时l1是 [1,2,3,4,5]
    

    删:
    ① pop: 按照索引位置删除,默认是删除最后一个,返回值是被删除的元素

    l = [1,2,3,4,5]
    n = l.pop[0] # n =1, l = [2,3,4,5]
    

    ② remove:指定元素删除,如果有重名元素,默认删除从左数第一个

    l1 = ["a", "b", "c", "d", "a"]
    l1.remove('a')  # ["b", "c", "d", "a"]
    

    ③ clear: 清空列表 list.clear()
    ④ del:

    l = [1,2,3,4,5]
    #可以按照索引删除
    del l[-1] # [1,2,3,4]
    #可以按照切片(步长)删除
    del l[1:3] #[1,4,5]
    #可以删除整个列表
    del l # []
    

    改:
    ① 按索引改
    ② 按切片步长改
    查:
    ① 按索引或者切片步长查询

    深浅拷贝:
    ① 浅拷贝:根据示例可以看出,浅拷贝嵌套的可变的数据类型是同一个。
    也就是说我如果修改 l1列表中的变量[4,5],那么l2中的变量也会随之改变。

    l1 = [1,2,3,[4,5]]
    l2 = l1.copy()
    print(id(l1))  #地址:140309423513544
    print(id(l2)) #地址:140309424351048
    print(id(l1[-1])) #地址 140309423513480
    print(id(l2[-1])) #地址 140309423513480
    

    ② 深拷贝:根据示例可以看出,浅拷贝嵌套的可变的数据类型不是同一个。
    也就是说我如果修改 l1列表中的变量[4,5],那么l2中的变量不会受到影响。

    import copy
    
    l1 = [1,2,3,[4,5]]
    l2 = copy.deepcopy(l1)
    print(id(l1))  #地址:140184249885128
    print(id(l2)) #地址:140184250047496
    print(id(l1[-1])) #地址:140184249886536
    print(id(l2[-1]))  #地址:140184250047560
    

    4)元组,以及拆包
    元组:重要数据,用户名,密码,个人信息,不想让别人改动的一些数据,存在元组中。
    元组拆包:

    a, b = (1, 2)  # 多一个少一个都不行
    print(a,b) # 1 2
    c = (1,2)
    a,b = c
    print(a,b) # 1 2
    

    5)字典相关
    ① 字典的3种创建方式(面试用)

    # 方式一:
    dic = dict((('one', 1), ('two', 2), ('three', 3)))
    print(dic)  # {'one': 1, 'two': 2, 'three': 3}
    
    # 方式二:
    dic = dict(one=1, two=2, three=3)
    print(dic)
    
    # 方式三:
    dic = dict({'one': 1, 'two': 2, 'three': 3})
    print(dic)
    
    #方式4:fromkeys
    dic = dict.fromkeys('abc', 100) #{'abc':100}
    dic = dict.fromkeys([1, 2, 3], 'alex') # {1:'alex', 2:'alex', 3:'alex'}
    # 坑:值共有一个,面试题
    dic = dict.fromkeys([1,2,3],[])
    dic[1].append(666)
    print(dic) # {1: [666], 2: [666], 3: [666]} 值是一个地址
    

    ② 字典的增删改查
    增:

    dic = {'name': '太白', 'age': 18, 'hobby_list': ['直男', '钢管', '开车']}
    # 方式一:直接增加,有则改之
    dic["sex"] = "男" #增
    dic["age"] = 30 # 改
    # 方式二:setdefault 无则加之,有则不改
    dic.setdefault('hobby')
    dic.setdefault('hobby', '球类运动')
    dic.setdefault('age', 45)
    print(dic) # {'name': '太白', 'age': 18, 'hobby_list': ['直男', '钢管', '开车'], 'hobby': None}
    
    #方式三:update,有则覆盖,无则增加
    dict.update(dict2)
    dic = {'name': '太白', 'age': 18}
    dic.update(hobby='运动', hight='175')
    dic.update({'name':'太白金星'})
    dic.update([(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd')])
    

    删:

    dic = {'name': '太白', 'age': 18, 'hobby_list': ['直男', '钢管', '开车']}
    # 方式一:pop删除,通过键,删除键值对,返回被删除的键的值
    dic.pop('age') 
    ret = dic.pop('age') 
    ret = dic.pop('hobby','没有此键') #pop还可以设置第二个参数,如果键不存在的时候,就会返回第二个值,这样就避免了报错
    print(ret) # 18 是pop返回的值
    print(dic) 
    
    #方式二:clear 清空
    dic.clear()
    print(dic) # {}
    
    #方式三:del
    del dic['age']
    del dic['age1'] #键不存在的时候会报错
    

    改:直接改

    dic['name'] = 'alex'
    print(dic)
    

    查:

    #方式1:直接查
    print(dic['hobby_list'])
    print(dic['hobby_list1'])  # 没有键的时候就会报错
    
    #方式2:get方法 推荐!!!
    l1 = dic.get('hobby_list')
    l1 = dic.get('hobby_list1','没有此键sb')  # 可以设置返回值,这样没有键的时候也不会报错了
    print(l1)
    

    字典三个重要的方法 :keys(),values(),items()

    dic = {'name': '太白', 'age': 18, 'hobby_list': ['直男', '钢管', '开车']}
    print(dic.keys()) # dict_keys(['name', 'age', 'hobby_list'])
    #转换成列表
    print(list(dic.keys())) #['name', 'age', 'hobby_list']
    ################
    print(dic.values()) # dict_values(['太白', 18, ['直男', '钢管', '开车']])
    #转换成列表
    print(list(dic.values())) #['太白', 18, ['直男', '钢管', '开车']]
    ################
    print(dic.items()) # dict_items([('name', '太白'), ('age', 18), ('hobby_list', ['直男', '钢管', '开车'])])
    print(list(dic.items())) #[('name', '太白'), ('age', 18), ('hobby_list', ['直男', '钢管', '开车'])]
    

    四、集合相关
    1)集合的创建

    set1 = set({1, 3, 'Barry', False})
    set2 = {1, 3, '太白金星', 4, 'alex', False, '武大'} #这个不是字典
    print(set1)
    # 空集合
    # set3  = {} 这不是空集合,这是空字典
    set3 = set()
    

    2)集合的增删改查

    set1 = {'太白金星', '景女神',  '武大', '三粗', 'alexsb', '吴老师'}
    set1.add("py")
    
    #update迭代着增加
    set1.update('fdsafgsd')
    print(set1) #{'f', '武大', 's', 'd', '景女神', 'g', 'a', '三粗', '太白金星', '吴老师', 'alexsb'}
    

    删:

    # remove 按照元素删除
    set1.remove('alexsb')
    print(set1)
    # pop 随机删除
    set1.pop()
    print(set1)
    

    改:

    # 先删除再增加
    set1.remove('太白金星')
    set1.add('男神')
    print(set1)
    

    3)集合的关系:

    #  交集
    set1 = {1, 2, 3, 4, 5}
    set2 = {4, 5, 6, 7, 8}
    print(set1 & set2) #{4, 5}
    
    # 并集:
    print(set1 | set2) #{1, 2, 3, 4, 5, 6, 7, 8} 
    
    # 差集 -
    print(set1 - set2) #{1, 2, 3} 
    
    # 反交集
    print(set1 ^ set2) #{1, 2, 3, 6, 7, 8}
    
    # 子集
    set1 = {1,2,3}
    set2 = {1,2,3,4,5,6}
    print(set1 < set2) #true
    # 超集
    print(set2 > set1) #true
    
    1. 列表去重
    # 列表的去重 ***
    l1 = [1,'太白', 1, 2, 2, '太白',2, 6, 6, 6, 3, '太白', 4, 5, ]
    set1 = set(l1)
    l1 = list(set1)
    print(l1)
    

    相关文章

      网友评论

          本文标题:py的一些基础

          本文链接:https://www.haomeiwen.com/subject/olhkqltx.html