• python——字符串、列表、字典、集合、文件操作,循环


    一、各种操作

    1、字符串

    a.字符串格式化输出

    name = "x5456"
    print "i am %s " % name
      
    #输出: i am x5456
    
    PS: 字符串是 %s;整数 %d;浮点数%f
    

    b.查找字符串(find)

    str.find(str, start=0, end=len(mystr))   # 检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1

    >>> str = 'xinge 好帅'
    
    >>> str.find('xing')
    0
    
    >>> str.find('好')
    6
    

    c.查找替换字符串中内容(replace)

    mystr.replace(str1, str2, mystr.count(str1))  # 把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.

    >>> str = 'abcabcabc'
    
    >>> str.replace('a','xinge',2)
    'xingebcxingebcabc'
    

    d.以str为分割符切片(split)

    mystr.split(str=" ", 2) # 以 str 为分隔符切片 mystr,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串

    >>> str = 'a
    b	c'
    
    >>> str
    'a
    b	c'
    
    >>> str.split()
    ['a', 'b', 'c']
    

    f.将字符串首字母大写(capitalize)

    >>> str='abc'
    
    >>> str.capitalize()
    'Abc'
    

    g.把字符串的每个单词首字母大写(title)

    >>> str = "hello world"
    
    >>> str.title()
    'Hello World'
    

    h.startswith,endswith

    startswith  # 检查字符串是否是以str 开头, 是则返回 True,否则返回 False

    endswith  # 检查字符串是否以str结束,如果是返回True,否则返回 False.

    i.upper,lower

    upper  # 转换 mystr 中所有字符为大写

    lower  # 转换 mystr 中所有字符为小写

    j.strip,lstrip,rstrip

    strip  # 清除左右两边的空格

    lstrip  # 清除左边的空格

    rstrip  # 清除右边的空格

    k.join

    mystr.join(str)  # mystr 中每个字符后面插入str,构造出一个新的字符串

    >>> '123'.join('abc')
    'a123b123c'
    

    2、列表

    a.切片

     1 >>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
     2 >>> names[1:4]  #取下标1至下标4之间的数字,包括1,不包括4
     3 ['Tenglan', 'Eric', 'Rain']
     4 
     5 >>> names[1:-1] #取下标1至-1的值,不包括-1
     6 ['Tenglan', 'Eric', 'Rain', 'Tom']
     7 
     8 >>> names[0:3] 
     9 ['Alex', 'Tenglan', 'Eric']
    10 
    11 >>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样
    12 ['Alex', 'Tenglan', 'Eric']
    13 
    14 >>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写
    15 ['Rain', 'Tom', 'Amy'] 
    16 
    17 >>> names[3:-1] #这样-1就不会被包含了
    18 ['Rain', 'Tom']
    19 
    20 >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个
    21 ['Alex', 'Eric', 'Tom'] 
    22 
    23 >>> names[::2] #和上句效果一样
    24 ['Alex', 'Eric', 'Tom']
    View Code

    b.追加

    1 >>> names
    2 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy']
    3 
    4 >>> names.append("我是新来的")
    5 
    6 >>> names
    7 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
    View Code

    c.插入

     1 >>> names
     2 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
     3 
     4 >>> names.insert(2,"强行从Eric前面插入")
     5 
     6 >>> names
     7 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
     8 
     9 >>> names.insert(5,"从eric后面插入试试新姿势")
    10 
    11 >>> names
    12 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
    View Code

    d.修改

    1 >>> names
    2 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
    3 
    4 >>> names[2] = "该换人了"
    5 
    6 >>> names
    7 ['Alex', 'Tenglan', '该换人了', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
    View Code

    e.删除

     1 >>> del names[2] 
     2 
     3 >>> names
     4 ['Alex', 'Tenglan', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
     5 
     6 >>> del names[4]
     7 
     8 >>> names
     9 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
    10 
    11 >>> names.remove("Eric") #删除指定元素
    12 
    13 >>> names
    14 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', '我是新来的']
    15 
    16 >>> names.pop() #删除列表最后一个值 
    17 '我是新来的'
    18 
    19 >>> names
    20 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
    View Code

    f.列表合并

    1 >>> names
    2 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
    3 
    4 >>> b = [1,2,3]
    5 
    6 >>> names.extend(b)
    7 
    8 >>> names
    9 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
    View Code

    g.浅copy

    1 >>> names
    2 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
    3 
    4 >>> name_copy = names.copy()
    5 
    6 >>> name_copy
    7 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
    View Code

    h.深copy

    1 import copy
    2   
    3 n1 = [1,2,3]
    4   
    5 n2 = copy.deepcopy(n1)
    View Code

    i.统计

    1 >>> names
    2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
    3 
    4 >>> names.count("Amy")
    5 2
    View Code

    j.排序&翻转

     1 >>> names
     2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
     3 >>> names.sort() #排序
     4 Traceback (most recent call last):
     5   File "<stdin>", line 1, in <module>
     6 TypeError: unorderable types: int() < str()   #3.0里不同数据类型不能放在一起排序了,擦
     7 >>> names[-3] = '1'
     8 >>> names[-2] = '2'
     9 >>> names[-1] = '3'
    10 >>> names
    11 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
    12 >>> names.sort()
    13 >>> names
    14 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']
    15 
    16 >>> names.reverse() #反转
    17 >>> names
    18 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
    View Code

    k.获取下标

    1 >>> names
    2 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
    3 >>> names.index("Amy")
    4 2 #只返回找到的第一个下标
    View Code

    3、元组

    元组和列表的区别就是元组不可更改,所以它只有2个方法,count和index。

    4、字典(键值对集合)

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

    特性:

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

    a.增加

    1 >>> info["stu1104"] = "abc"
    2 >>> info
    3 {'stu1102': 'x5456', 'stu1104': 'abc', 'stu1103': 'Mali', 'stu1101': 'Wu'}
    View Code

    b.修改

    1 >>> info['stu1101'] = "xinge"
    2 >>> info
    3 {'stu1102': 'x5456', 'stu1103':  Mali', 'stu1101': 'xinge'}
    View Code

    c.删除

     1 >>> info
     2 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': '武藤兰'}
     3 >>> info.pop("stu1101") #标准删除姿势
     4 '武藤兰'
     5 >>> info
     6 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
     7 >>> del info['stu1103'] #换个姿势删除
     8 >>> info
     9 {'stu1102': 'LongZe Luola'}
    10 >>> 
    11 >>> 
    12 >>> 
    13 >>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
    14 >>> info
    15 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'} #随机删除
    16 >>> info.popitem()
    17 ('stu1102', 'LongZe Luola')
    18 >>> info
    19 {'stu1103': 'XiaoZe Maliya'}
    View Code

    d.查找

     1 >>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
     2 >>> 
     3 >>> "stu1102" in info #标准用法
     4 True
     5 >>> info.get("stu1102")  #获取
     6 'LongZe Luola'
     7 >>> info["stu1102"] #同上,但是看下面
     8 'LongZe Luola'
     9 >>> info["stu1105"]  #如果一个key不存在,就报错,get不会,不存在只返回None
    10 Traceback (most recent call last):
    11   File "<stdin>", line 1, in <module>
    12 KeyError: 'stu1105'
    View Code

    e.获取所有键/值

    1 #values
    2 >>> info.values()
    3 dict_values(['LongZe Luola', 'XiaoZe Maliya'])
    4 
    5 #keys
    6 >>> info.keys()
    7 dict_keys(['stu1102', 'stu1103'])
    View Code

    f.字典合并

    1 #update 
    2 >>> info
    3 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
    4 >>> b = {1:2,3:4, "stu1102":"龙泽萝拉"}
    5 >>> info.update(b)
    6 >>> info
    7 {'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
    View Code

    g.深copy

    import copy
      
    n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
      
    n4 = copy.deepcopy(n1)

    h.字典循环

    #方法1
    for key in info:
        print(key,info[key])
    
    #方法2
    for k,v in info.items(): #会先把dict转成list,数据里大时莫用
        print(k,v)
    

    5、集合操作

    集合是一个无序的,不重复的数据组合,它的主要作用如下:

    • 去重,把一个列表变成集合,就自动去重了
    • 关系测试,测试两组数据之前的交集、差集、并集等关系

    常用操作:

    s = set([3,5,9,10])      #创建一个数值集合  
      
    t = set("Hello")         #创建一个唯一字符的集合  
    
    
    a = t | s          # t 和 s的并集  
      
    b = t & s          # t 和 s的交集  
      
    c = t – s          # 求差集(项在t中,但不在s中)  
      
    d = t ^ s          # 对称差集(项在t或s中,但不会同时出现在二者中)  
      
       
      
    基本操作:  
      
    t.add('x')            # 添加一项  
      
    s.update([10,37,42])  # 在s中添加多项  
      
       
      
    使用remove()可以删除一项:  
      
    t.remove('H')  
      
      
    len(s)  
    set 的长度  
      
    x in s  
    测试 x 是否是 s 的成员  
      
    x not in s  
    测试 x 是否不是 s 的成员  
      
    s.issubset(t)  
    s <= t  
    测试是否 s 中的每一个元素都在 t 中  
      
    s.issuperset(t)  
    s >= t  
    测试是否 t 中的每一个元素都在 s 中  
      
    s.union(t)  
    s | t  
    返回一个新的 set 包含 s 和 t 中的每一个元素  
      
    s.intersection(t)  
    s & t  
    返回一个新的 set 包含 s 和 t 中的公共元素  
      
    s.difference(t)  
    s - t  
    返回一个新的 set 包含 s 中有但是 t 中没有的元素  
      
    s.symmetric_difference(t)  
    s ^ t  
    返回一个新的 set 包含 s 和 t 中不重复的元素  
      
    s.copy()  
    返回 set “s”的一个浅复制
    

    6、文件读写

    对文件操作流程

    1. 打开文件,得到文件句柄并赋值给一个变量
    2. 通过句柄对文件进行操作
    3. 关闭文件 
    f = open('lyrics') #打开文件
    
    first_line = f.readline()
    
    print('first line:',first_line) #读一行
    
    data = f.read()# 读取剩下的所有内容,文件大时不要用
    
    print(data) #打印文件
     
    f.close() #关闭文件
    

    打开文件的模式有:

    • r,只读模式(默认)。
    • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
    • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

    "+" 表示可以同时读写某个文件

    • r+,可读写文件。【可读;可写;可追加】
    • w+,写读
    • a+,同a

    "U"表示在读取时,可以将 自动转换成 (与 r 或 r+ 模式同使用)

    • rU
    • r+U

    "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

    • rb
    • wb
    • ab

    with语句

    为了避免打开文件后忘记关闭,可以通过管理上下文,即:

    with open('log','r') as f:
         
        ...
    

    二、循环

    一、while循环

    while 条件:
         
        # 循环体
     
        # 如果条件为真,那么循环体则执行
        # 如果条件为假,那么循环体不执行

    二、for循环

    用户按照顺序循环可迭代对象中的内容,

    li = [11,22,33,44]
    for item in li:
        print item
    • break:跳出整个循环
    • continue:跳出当前循环

    enumrate

    为可迭代的对象添加序号

    li = [11,22,33]
    for k,v in enumerate(li, 1):
        print(k,v)
    

    range

    指定范围,生成指定的数字

    print range(1, 10)
    # 结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
     
    print range(1, 10, 2)
    # 结果:[1, 3, 5, 7, 9]
     
    print range(30, 0, -2)
    # 结果:[30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2]  
    
  • 相关阅读:
    [考试反思]0421省选模拟76:学傻
    [考试反思]0420省选模拟75:安在
    [考试反思]0418省选模拟74:杂枝
    [考试反思]0417省选模拟73:纠结
    [考试反思]0416省选模拟72:停滞
    [考试反思]0415省选模拟71:限制
    [考试反思]0414省选模拟70:阻塞
    [考试反思]0413省选模拟69:遗弃
    [考试反思]0411省选模拟68:毒瘤
    [考试反思]0410省选模拟67:迷惑
  • 原文地址:https://www.cnblogs.com/x54256/p/8126861.html
Copyright © 2020-2023  润新知