zoukankan      html  css  js  c++  java
  • python基础 day7 基础数据类型补充、编码的进一步认识

    一、基础数据类型的补充

    字符串str

    s1 = 'jaSOn'
    print(s1.capitalize())  # 首字母大写,其余变小写
    print(s1.swapcase())  # 大小写反转
    
    s2 = 'i am jason'
    print(s2.title())  # 每个单词的首字母大写
    
    s3 = 'jason'
    print(s3.center(20, '*'))  # 前后各放20个*
    
    # find() 和index()  通过元素找索引,如果找不到,find输出-1,index报错
    s4 = 'jason'
    print(s4.find('a'))
    print(s4.index('o'))
    

    元组tuple

    # 元组中如果只有一个元素,并且没有逗号,那么它就不是元组。
    # count()
    tuple1 = (1, 2, 2, 2, 2, 3, 3, 3)
    print(tuple1.count(2))
    # index()
    tuple2 = ('aloha', 'jason', 'carly')
    print(tuple2.index('aloha'))
    

    列表list

    # 1. index() 和字符串元组用法一样
    list1 = ['aloha', 'jason', 'carly']
    print(list1.index('aloha'))
    
    # 2. sort() 排序
    list2 = [1, 3, 6, 10, 2, 5, 7]
    list2.sort()  # 默认从小到大排序
    list2.sort(reverse=True)  # 从大到小排序
    list2.reverse()  # 反转排序
    print(list2)
    
    
    # 3. 列表相加
    list1 = [1, 2, 3]
    list2 = ['jason', 'carly', 1, 2]
    list3 = list1 + list2
    print(list3)
    
    # 4. 列表可以与数字相乘
    list1 = [1, 'aloha', '哈哈哈']
    list2 = list1 * 3
    print(list2)
    
    
    # 容易掉坑的地方
    # 5.倒叙法删除list1中索引为奇数的元素
    list1 = [1, 2, 3, 4, 5]
    for index in range(len(list1)-1, -1, -1):
        if index % 2 == 1:
            list1.pop(index)
    print(list1)
    循环一个列表的时候最好不要改变列表的大小
    

    字典dict

    # 1. update()
    # 增&改的三种写法
    dict1 = {'name': 'jason', 'age': 24}
    dict1.update({'high': 168, 'name': 'carly'})  # 等同于dict.update(dict2)
    dict1.update(hobby='sleep', age='20')
    dict1.update([('what', 'dog'), ('hobby', 'eat')])
    print(dict1)
    
    # 2. fromkeys
    dict1 = dict.fromkeys([1, 2, 3], 'jason')
    print(dict1)  # 结果为{1: 'jason', 2: 'jason', 3: 'jason'}
    ###注意###
    dict1 = dict.fromkeys([1, 2, 3], [])
    print(dict1)  # 此时结果为{1: [], 2: [], 3: []}
    dict1[1].append(666)
    print(dict1)  # 结果为{1: [666], 2: [666], 3: [666]}
    # 我们打印下dict1中所有值的id看一下
    for value in dict1.values():
        print(id(value))
    # 可以发现dict1所有值的id相同,因此,可以知道,dict1.fromkeys(lterable, value)方法中的值共用一个
    
    
    # 3.将字典中键含有'k'元素的键值对删除
    dict1 = {'k1': 'v1', 'k2': 'v2', 'age': '24', 'k3': 'v3', 'name': 'jason'}
    # 循环一个字典时,不可以改变这个字典的大小
    dict2 = {}
    for key in dict1.keys():
        if 'k' not in key:
            dict2.update({key: dict1[key]})
    print(dict2)
    
    # 还可以将字典转成列表进行循环
    for key in list(dict1.keys()):
        if 'k' in  key:
            dict1.pop(key)
    print(dict1)
    

    二、编码的进一步认识

    1.不同编码之间不能互相识别
    2.数据在内存中全部都是以Unicode编码的,但是数据在网络传输或者存储在硬盘,必须是非Unicode编码

    内存中的Unicode编码数据必须先转化成bytes(特殊的字符串数据类型,内部编码非Unicode)

    # 英文字符串转换
    b1 = b'hello'
    print(b1, type(b1))
    
    # 中文字符串转换
    s2 = '杨森'
    b2 = s2.encode('utf-8')
    s3 = b2.decode('utf-8')
    print(b2, type(b2))
    print(s3, type(s3))
    

    gbk 转换成 utf-8(重要)

    # 先获取一个gbk编码
    s1 = '中国'
    s2 = s1.encode('gbk')
    print(s2)   # b'xd6xd0xb9xfa'
    
    b_gbk = b'xd6xd0xb9xfa'
    ss = b_gbk.decode('gbk')
    print(ss, type(ss))
    b_utf8 = ss.encode('utf-8')
    print(b_utf8)
    
  • 相关阅读:
    c#发送邮件.net1.1和.net2.0中的两个方法
    六步使用ICallbackEventHandler实现无刷新回调
    报表项目总结
    转载:Tomcat Port 8009 与AJP13协议
    JUnit4 使用指南二 (熟练掌握)
    JUnit4 使用指南一 (简单上手)
    HP的项目中曾做一个业务日志系统
    Unitils使用(转载)
    iBatis 学习
    JUnit4 使用指南三 (Runner 特性分析)
  • 原文地址:https://www.cnblogs.com/west-yang/p/12567246.html
Copyright © 2011-2022 走看看