zoukankan      html  css  js  c++  java
  • Python_02

    本节内容

    • 列表、元组操作
    • 字符串操作
    • 字典操作

     1、列表、元组操作 

    列表

    列表是经常操作的数据形式之一,可以对列表对数据进行简单的增删改查等操作。

    定义列表

    1 names = ['ZhangYang','Guyun','Xiangpeng','XuLiangchen']

    通过下标访问列表中的元素,下标从0开始计数

    1 >>> names[0]
    2 'ZhangYang'
    3 >>> names[2]
    4 'Xiangpeng'
    5 >>> names[-1]
    6 'XuLiangchen'
    7 >>> names[-2] #倒序取
    8 'Xiangpeng'

    切片,取多个元素

     1 >>> names = ['ZhangYang','Guyun','Xiangpeng','Xmy','XuLiangchen']
     2 >>> names[1:3]
     3 ['Guyun', 'Xiangpeng']
     4 >>> names[1:-1]
     5 ['Guyun', 'Xiangpeng', 'Xmy']
     6 >>> names[:3] #等同于names[0:3]
     7 ['ZhangYang', 'Guyun', 'Xiangpeng']
     8 >>> names[3:]
     9 ['Xmy', 'XuLiangchen']
    10 >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个,等同于names[::2]
    11 ['ZhangYang', 'Xiangpeng', 'XuLiangchen']
    View Code

    追加

    1 >>> names
    2 ['ZhangYang', 'Guyun', 'Xiangpeng', 'Xmy', 'XuLiangchen']
    3 >>> names.append('LeiHaidong')
    4 >>> names
    5 ['ZhangYang', 'Guyun', 'Xiangpeng', 'Xmy', 'XuLiangchen', 'LeiHaidong']
    View Code

    插入

    1 >>> names
    2 ['ZhangYang', 'Guyun', 'Xiangpeng', 'Xmy', 'XuLiangchen', 'LeiHaidong']
    3 >>> names.insert(2,'flashman') #插入到位置2
    4 >>> names
    5 ['ZhangYang', 'Guyun', 'flashman', 'Xiangpeng', 'Xmy', 'XuLiangchen', 'LeiHaidong']
    View Code

    修改

    1 >>> names
    2 ['ZhangYang', 'Guyun', 'flashman', 'Xiangpeng', 'Xmy', 'XuLiangchen', 'LeiHaidong']
    3 >>> names[2] = 'oldman'
    4 >>> names
    5 ['ZhangYang', 'Guyun', 'oldman', 'Xiangpeng', 'Xmy', 'XuLiangchen', 'LeiHaidong']
    View Code

    删除

     1 >>> names
     2 ['ZhangYang', 'Guyun', 'flashman', 'Xiangpeng', 'Xmy', 'XuLiangchen', 'LeiHaidong']
     3 >>> names[2] = 'oldman'
     4 >>> names
     5 ['ZhangYang', 'Guyun', 'oldman', 'Xiangpeng', 'Xmy', 'XuLiangchen', 'LeiHaidong']
     6 >>> del names[2]
     7 >>> names
     8 ['ZhangYang', 'Guyun', 'Xiangpeng', 'Xmy', 'XuLiangchen', 'LeiHaidong']
     9 >>> names.remove('Xmy') #指定删除元素
    10 >>> names
    11 ['ZhangYang', 'Guyun', 'Xiangpeng', 'XuLiangchen', 'LeiHaidong']
    12 >>> names.pop() #删除最后一个值
    13 'LeiHaidong'
    14 >>> names
    15 ['ZhangYang', 'Guyun', 'Xiangpeng', 'XuLiangchen']
    View Code

    扩展

    1 >>> names
    2 ['ZhangYang', 'Guyun', 'Xiangpeng', 'XuLiangchen']
    3 >>> names2 = [1,2,3,4]
    4 >>> names.extend(names2)
    5 >>> names
    6 ['ZhangYang', 'Guyun', 'Xiangpeng', 'XuLiangchen', 1, 2, 3, 4]
    View Code

    拷贝

     1 >>> names
     2 ['ZhangYang', 'Guyun', 'Xiangpeng', 'XuLiangchen', 1, 2, 3, 4]
     3 >>> names_copy = names.copy() #浅拷贝
     4 >>> names_copy
     5 ['ZhangYang', 'Guyun', 'Xiangpeng', 'XuLiangchen', 1, 2, 3, 4]
     6 >>> 
     7 >>> names.insert(4,['Xmy','Zhb'])
     8 >>> names
     9 ['ZhangYang', 'Guyun', 'Xiangpeng', 'XuLiangchen', ['Xmy', 'Zhb'], 1, 2, 3, 4]
    10 >>> names_copy = copy.copy(names) #浅拷贝
    11 >>> names_copy2 = copy.deepcopy(names) #深拷贝
    12 >>> names_copy
    13 ['ZhangYang', 'Guyun', 'Xiangpeng', 'XuLiangchen', ['Xmy', 'Zhb'], 1, 2, 3, 4]
    14 >>> names_copy2
    15 ['ZhangYang', 'Guyun', 'Xiangpeng', 'XuLiangchen', ['Xmy', 'Zhb'], 1, 2, 3, 4]
    16 >>> names[2]='向鹏'
    17 >>> names[4][0] = 'xumengyuan'
    18 >>> names
    19 ['ZhangYang', 'Guyun', '向鹏', 'XuLiangchen', ['xumengyuan', 'Zhb'], 1, 2, 3, 4]
    20 >>> names_copy
    21 ['ZhangYang', 'Guyun', 'Xiangpeng', 'XuLiangchen', ['xumengyuan', 'Zhb'], 1, 2, 3, 4]
    22 >>> names_copy2
    23 ['ZhangYang', 'Guyun', 'Xiangpeng', 'XuLiangchen', ['Xmy', 'Zhb'], 1, 2, 3, 4]
    View Code

    统计

    1 >>> names
    2 ['ZhangYang', 'Guyun', '向鹏', 'XuLiangchen', ['xumengyuan', 'Zhb'], 'Guyun',1, 2, 3, 4]
    3 >>> names.count('xumengyuan')
    4 0
    5 >>> names.count(['xumengyuan', 'Zhb'])
    6 1
    7 >>> names.count('Guyun')
    8 2
    View Code

    排序&反转

     1 >>> names
     2 ['ZhangYang', 'Guyun', '向鹏', 'XuLiangchen', 1, 2, 3, 4]
     3 >>> names.sort() #排序
     4 Traceback (most recent call last):
     5   File "<input>", line 1, in <module>
     6 TypeError: unorderable types: list() < str() #3.0里不同数据类型不能放在一起排序了
     7 >>> names[-4:] = '1','2','3','4'
     8 >>> names
     9 ['ZhangYang', 'Guyun', '向鹏', 'XuLiangchen', '1', '2', '3', '4']
    10 >>> names.sort()
    11 >>> names
    12 ['1', '2', '3', '4', 'Guyun', 'XuLiangchen', 'ZhangYang', '向鹏']
    13 >>> names.reverse() #反转
    14 >>> names
    15 ['向鹏', 'ZhangYang', 'XuLiangchen', 'Guyun', '4', '3', '2', '1']
    View Code

    获取下标

    1 >>> names
    2 ['向鹏', 'ZhangYang', 'XuLiangchen', 'Guyun', '4', '3', '2', '1']
    3 >>> names.index('3')
    4 5
    View Code

    元组

    元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表

    1 names = ('Alex','Jack')

    它只有2个方法,一个是count,一个是index,完毕。 

     

     2、字符串操作 

    特性:不可修改

     定义字符串

    1 name = 'My name is {name} and I am {year} old'
    2 name2 = 'My 	name is {name} and I am {year} old'

    字符串相关函数

     1 >>> name.capitalize() #首字母大写
     2 'My name is {name} and i am {year} old'
     3 >>> name.count('m') 统计m出现的次数
     4 3
     5 >>> name.center(50,'-') #输出如下
     6 '------My name is {name} and I am {year} old-------'
     7 >>> name.endswith('my') #判断字符串是否以my结尾
     8 False
     9 >>> name.expandtabs(tabsize=30) 
    10 'My name is {name} and I am {year} old'
    11 >>> name2.expandtabs(tabsize=30) #将	转换成多长的空格
    12 'My                            name is {name} and I am {year} old'
    13 >>> name.find('name') #查找那么并返回其索引,找不到则返回-1
    14 3
    15 >>> name[name.find('name'):9] #可以用find做切片
    16 'name i'
    17 
    18 #format
    19 >>> msg = "my name is {}, and age is {}"
    20 >>> msg.format("Xmy",23)
    21 'My name is Xmy and I am 23'
    22 >>> msg = "my name is {1}, and age is {0}"
    23 msg.format("Xmy",23)
    24 'My name is 23 and I am Xmy'
    25 >>> msg = "my name is {name}, and age is {age}"
    26 >>> msg.format(age=23,name="Xmy")
    27 'my name is Xmy, and age is 23'
    28 #format_map
    29 >>> name.format_map({'name':'Xmy','year':12})
    30 'my name is Xmy, and age is 23'
    31 
    32 
    33 >>> 'ab23'.isalnum()
    34 True
    35 >>> 'abA'.isalpha()
    36 True
    37 >>> '1A'.isdecimal()
    38 False
    39 >>> '1A'.isdigit()
    40 False
    41 >>> 'a1A'.isidentifier() #判断是不是一个合法的标识符
    42 True
    43 >>> '33a'.isnumeric()
    44 False
    45 >>> ' '.isspace()
    46 True
    47 >>> 'My Name Is'.istitle()
    48 True
    49 >>> 'My Name Is'.isprintable()
    50 True
    51 >>> 'My Name Is'.isupper()
    52 False
    53 >>> '+'.join(['1','2','3','4'])
    54 '1+2+3+4'
    55 >>> name.ljust(50,'*')
    56 'My name is {name} and I am {year} old*************'
    57 >>> name.rjust(50,'*')
    58 '*************My name is {name} and I am {year} old'
    59 >>> name.lower()
    60 'my name is {name} and i am {year} old'
    61 >>> name.upper()
    62 'MY NAME IS {NAME} AND I AM {YEAR} OLD'
    63 >>> '
    Alex'.lstrip()
    64 'Alex'
    65 >>> 'Alex
    '.rstrip()
    66 'Alex'
    67 >>> '   Alex
    '.strip()
    68 'Alex'
    69 
    70 #maketrans
    71 >>> p = str.maketrans('abcdef','123456')
    72 >>> 'alex li'.translate(p)
    73 '1l5x li'
    74 
    75 >>> 'Alex li'.replace('l','L',1)
    76 'ALex li'
    77 >>> 'alex li'.rfind('l')
    78 5
    79 >>> 'alex li'.split('l')
    80 ['a', 'ex ', 'i']
    81 >>> 'alex
    li'.splitlines()
    82 ['alex', 'li']
    83 >>> 'Alex Li'.swapcase() #大小写互换
    84 'aLEX lI'
    85 >>> 'alex li'.title()
    86 'Alex Li'
    87 >>> 'alex'.zfill(50)
    88 '0000000000000000000000000000000000000000000000alex'
    View Code

     3、字典操作 

     字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

    语法:

    info = {
        'stu1101':'TengLan Wu',
        'stu1102':'LongZe Luola',
        'stu1103':'XiaoZe Maliya',
    }

    字典的特性:

    • dict是无序的
    • key必须是唯一的,so 天生去重

    增加

    1 >>> info['stu1104'] = 'CangJing Kong'
    2 >>> info
    3 {'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1104': 'CangJing Kong'}
    View Code

    修改

    1 >>> info['stu1102'] = '武藤兰'
    2 >>> info
    3 {'stu1101': 'TengLan Wu', 'stu1102': '武藤兰', 'stu1103': 'XiaoZe Maliya'}
    View Code

    删除

     1 >>> info
     2 {'stu1101': 'TengLan Wu', 'stu1102': '武藤兰', 'stu1103': 'XiaoZe Maliya'}
     3 >>> info.pop('stu1101')
     4 'TengLan Wu'
     5 >>> info
     6 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
     7 >>> del info['stu1102']
     8 >>> info
     9 {'stu1103': 'XiaoZe Maliya'}
    10 >>>
    11 >>>
    12 >>>info
    13 {'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
    14 >>> info.popitem()
    15 ('stu1103', 'XiaoZe Maliya')
    16 >>> info
    17 {'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola'}
    View Code

    查找

     1 >>> info
     2 {'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
     3 >>> 'stu1103' in info
     4 True
     5 >>> info.get('stu1103')
     6 'XiaoZe Maliya'
     7 >>> info['stu1103']
     8 'XiaoZe Maliya'
     9 >>> info['stu1105'] #如果一个key不存在,就报错,get不会,不存在只返回None
    10 Traceback (most recent call last):
    11   File "<input>", line 1, in <module>
    12 KeyError: 'stu1105'
    View Code

    多级字典嵌套及操作

     1 >>> av_catalog = {
     2 ...     "欧美":{
     3 ...         "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
     4 ...         "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
     5 ...         "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
     6 ...         "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
     7 ...     },
     8 ...     "日韩":{
     9 ...         "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
    10 ...     },
    11 ...     "大陆":{
    12 ...         "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
    13 ...     }
    14 ... }
    15 >>> av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来"
    16 >>> print(av_catalog["大陆"]["1024"])
    17 ['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']
    View Code

    其他

     1 #values
     2 >>> info.values()
     3 dict_values(['TengLan Wu', 'LongZe Luola', 'XiaoZe Maliya'])
     4 
     5 #keys
     6 >>> info.keys()
     7 dict_keys(['stu1101', 'stu1102', 'stu1103'])
     8 
     9 #setdefault
    10 >>> info.setdefault('stu1101','SDASGA')
    11 'TengLan Wu'
    12 >>> info
    13 {'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
    14 >>> info.setdefault('stu1105','SDASGA')
    15 'SDASGA'
    16 >>> info
    17 {'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1105': 'SDASGA'}
    18 
    19 #update
    20 >>> info
    21 {'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1105': 'SDASGA'}
    22 >>> b = {
    23 ...     'stu1101':'Alex Li',
    24 ...     1:3,
    25 ...     2:5
    26 ... }
    27 >>> info.update(b)
    28 >>> info
    29 {'stu1101': 'Alex Li', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1105': 'SDASGA', 1: 3, 2: 5}
    30 
    31 #items
    32 >>> info.items()
    33 dict_items([('stu1101', 'Alex Li'), ('stu1102', 'LongZe Luola'), ('stu1103', 'XiaoZe Maliya'), ('stu1105', 'SDASGA'), (1, 3), (2, 5)])
    34 
    35 #初始化一个字典
    36 >>> c = dict.fromkeys([1,2,3],[1,{'name':'Xmy'},444]) 
    37 >>> c
    38 {1: [1, {'name': 'Xmy'}, 444], 2: [1, {'name': 'Xmy'}, 444], 3: [1, {'name': 'Xmy'}, 444]}
    View Code

    循环dict

    1 #method_1
    2 for i in info: # 更高效
    3     print(i,info[i])
    4 
    5 #method_2
    6 for k,v in info.items(): #会先把dict转成list,数据里大时莫用
    7     print(k,v)
  • 相关阅读:
    Java开发环境安装,环境变量
    Java开发环境
    命令提示符
    字节
    进制之间的转换
    Java背景
    项目中如何实现分页
    集合实战
    程序优化--降低复杂度
    消息队列 ---常用的 MQ 中间件
  • 原文地址:https://www.cnblogs.com/xmyzero/p/7041426.html
Copyright © 2011-2022 走看看