字符串、列表、元组的常用操作

字符串、列表、元组的常用操作

字符串

  • 1.去除空格 strip()

    s1 = '   测试程序     '
    print(s1.strip())
    # 去除两端的空格, 可以用于用户输入时去掉输入
    # 内容两端的多余空格,括号内的是被去除的内容,不写默认为空格
    print(s1.lstrip())
    # 去除左边的空格
    print(s1.rstrip())
    # 去除右边的空格
    
  • 居中设置 center(‘占几个字符’, '代替多余空格的内容')

    s = "测试"
    print(s.center(10, '-'))
    # 让字符串居中
    # 结果: ----测试----
    
  • 字符串中字母大小写

    str1 = str.upper()
    print(str1)
    # 把字符串中的每一个单词全部转换成大写
    str2 = str.lower()
    print(str2)
    str3 = str2.capitalize()
    print(str3)
    print(str.title())
    # 每个单词的首字母大写
    print(str.capitalize())
    
  • 索引操作,可以设置步伐

    str = 'This is a string'
    print(str[-7:-2:2])
    print(str[-1:-7:-2])
    
  • 替换字符串中的内容

    s = "Alex is a programmer"
    s1 = s.replace(' ', '')
    print(s1)
    #  strip只能去除掉两边的内容,无法去除中间的内容
    # 但replace可以对中间的内容进行替换,‘’表示替换去除掉内容
    s2 = s.replace('Alex', 'Jack')
    print(s2)
    
    s3 = 'AlexAlexAlexAlexAlexAlex'
    s4 = s3.replace('Alex', 'Jack', 3)
    print(s4)
    # 最后的数字表示替换的个数
    
  • 切片操作split(‘分界的内容,被切掉的内容’),切片后结果是有多个字符串组成的列表

    Note

    需要注意的是如果切片操作切到了字符串的两端,那么会形成空的字符

    s5 = 'Jack_is_a_hacker_and_very_like_program'
    s6 = s5.split('_')
    print(s6)
    s7 = s5.split('_program')
    print(s7)
    # 结果是:
    ['Jack', 'is', 'a', 'hacker', 'and', 'very', 'like', 'program']
    ['Jack_is_a_hacker_and_very_like', '']
    # 空字符串
    
  • 字符串的格式化操作

    print('%s的性别是%s,年龄是%d' % (name, gender, age))
    # %进行格式化,位置是固定的
    李明的性别是男,年龄是19
    print('{}的年龄是{},性别是{}'.format(name, age, gender))
    李明的年龄是19,性别是男
    print('{2}的年龄是{0},性别是{1}'.format(age, gender, name))
    李明的年龄是19,性别是男
    # 可以指定位置,format中的顺序可以随意写,但需要注意的是下标索引必须从0开始
    print('%s的价格是%.2f' % (food, price))
    大米的价格是123456.21
    # 保留小数点后的两位
    
  • 查找操作,注意start和end后都需要加上s

    s.startswith('测试')
    True
    # 查找字符串以固定内容开头
    s.endswith('内容')
    True
    # 查找字符串以固定内容结尾
    s = 'aaaaaaaabbbbbbbb'
    print(s.count('a'))
    8
    # 计算字符串中固定字符出现的次数
    s = '12345sfljaso'
    print(s.find('f'))
    6
    # 查找字符在字符串中的具体位置
    print(s.find('ccc'))
    -1
    注意: 如果字符串中没有查找的字符,那么返回值是-1
    s = '123456dafsdfgfbbbbbbbb1234'
    print(s.find('fgf', 4, 23))
    11
    # 查找固定位置内是否存在字符, 4为起始位置,23为结束位置
    print(s.index('bbbb'))
    14
    # 查找字符在字符串中的下标索引值
    print(s.isalpha())
    False
    # 判断字符串是否由字母组成
    print(s.isalnum())
    True
    # 判断字符串是否由字母和数字组成
    print(s.isdigit())
    True
    # 判断字符串是否由数字组成
    if s.startswith('12') and s.endswith('qew'):
    ...if s.isalnum() and s.find('fg', 3, 15):
    ...     print('fg在字符串内')
    ...else:
    ...     print('fg不在字符串内')
    ...else:
    ...     print('字符串格式不正确')
    # 结果是:
    fg在字符串内
    # 综合使用
    
  • 字符串的长度

    s.__len__()
    23
    len(s)
    23
    # __len__()方法等同于len(), len调用的就是__len__()方法
    
  • 遍历字符串中的所有内容,需要先求出中长度,根据下标索引来打印出来

    '''方法一:根据索引来打印'''
    s = '21324354wqeretr'
    l = len(s)
    for i in range(0, l - 1):
    ...     print(s[i])
    ... 
    # 结果是:
    2、1、3、2、4、3、5、4、w、q、e、r、e、t
    '''直接遍历打印'''
    for i in s:
      print(s, end='#')
    # 结果是:
    1#2#3#2#4#5#w#q#e#r#w#g#f#d#v#c#
    # 这里需要注意end的用法,这个用法在python3版本中才可以直接使用,python2版本不支持
    

列表

  • 列表中的切片操作

    list = [1, 2, 3, 4, '21345wfe', 'safewgfvsc', 12324]
    print(list[4][3])
    # 结果是:
    4
    # 字符串也是可以继续索引的
    print(list[2:4])
    ['sfaelm', 2]
    list.append({'name': 'Alex'})
    # 在列表末尾添加元素
    list
    ['213sd', '1324frvgf', 'sfaelm', 2, 1, {'name': 'Alex'}]
    # 列表中可以包含字典元素
    print(list[5]['name'])
    Alex
    # 打印字典的value
    print(list[::2])
    ['213sd', 'sfaelm', 1]
    
  • 列表的增删改查

    '''添加元素'''
    list = ['黄渤', '史泰龙', '黄宏']
    list.pop()
    # 删除列表末尾元素
    print(list)
    list.append('张艺')
    # 列表末尾添加元素
    list.insert(3, '姚明')
    # 在固定位置添加元素
    print(list)
    '''迭代添加'''
    list.extend('马化腾')
    print(list)
    list.extend(['马云', '俞敏洪'])
    print(list)
    # 结果是:
    ['黄渤', '史泰龙', '张艺', '马', '化', '腾']
    ['黄渤', '史泰龙', '张艺', '马', '化', '腾', '马云', '俞敏洪']
    # 注意:extend中添加也是在末尾,如果只是添加一个字符串,那么字符串中的每一个字符都会被当作单个元素一次添加进去,如果以列表的形式来添加,那么列表会被当作整体添加。
    ------------------
    '''删除元素'''
    # 方式一
    data = list.pop(2)
    print(data)
    print(list)
    张艺
    ['黄渤', '史泰龙', '马', '化', '腾', '马云', '俞敏洪']
    # pop如果不加参数,默认剔除掉末尾的元素,如果添加下标索引值,则删除指定的元素,pop具有返回值,删除的元素可以赋值给变量做判断
    # 方式二
    list.remove('马云')
    print(list)
    ['黄渤', '史泰龙', '马', '化', '腾', '俞敏洪']
    # 四种删除方式中只有remove是通过写出删除的元素来删除的
    # 方式三
    del list[3]
    print(list)
    ['黄渤', '史泰龙', '马', '腾', '俞敏洪']
    del list[2:4]
    print(list)
    ['黄渤', '史泰龙', '俞敏洪']
    # 通过下标索引来删除, 并且可以进行切片删除
    # 方式四
    list.clear()
    [ ]
    # 把列表元素全部删除
    -------------
    '''修改列表元素:过程是先删除后新增'''
    list = ['1234', '王者荣耀', 'sdg', 123243, '麦田的守望者', '平凡的世界', 123, {'age': 13}]
    list[2:4] = ['政治', '军事']
    print(list)
    ['1234', '王者荣耀', '政治', '军事', '麦田的守望者', '平凡的世界', 123, {'age': 13}]
    # 通过切片来进行修改
    list[1:4:2] = ['QQ', 'Wechat']
    ['1234', 'QQ', '政治', 'Wechat', '麦田的守望者', '平凡的世界', 123, {'age': 13}]
    # 通过列表中的步伐来隔元素进行修改,注意:需要修改几个元素,列表中需要给定几个元素,否则会报错
    
  • 列表的遍历

    for i in list:
        print(i, end=' ')
    1234 QQ 政治 Wechat 麦田的守望者 平凡的世界 123 {'age': 13}
    
  • 列表的嵌套(将为操作)

    list = [[1, 2], ['测试', '程序'], [[1, 2, 3], [3, 4, 5], [6, 7, 8]], {'name': 'Alex'}]
    list[2][1][0] = 1111
    # 或者list[2][1][0] = list[2][1][0] + 1098
    print(list)
    [[1, 2], ['测试', '程序'], [[1, 2, 3], [1111, 4, 5], [6, 7, 8]], {'name': 'Alex'}]
    # 多层嵌套使用
    
  • 其他的操作

    '''查询元素出现的次数,和字符串用法一致'''
    count = list[1].count('测试')
    print(count)
    '''列表排序'''
    list = [0, 20, 33, 1, 44, -1]
    list.sort()
    print(list)
    [-1, 0, 1, 20, 33, 44]
    # sort排序方式默认是升序排序
    list.reverse()
    print(list)
    [44, 33, 20, 1, 0, -1]
    # reverse()默认为降序排序
    list.sort(reverse=True)
    print(list)
    [44, 33, 20, 1, 0, -1]
    # 或者还继续红sort,但是添加元素reverse=True来进行降序排列
    
    

元组(不可变的列表)

  • 基本用法:小括号包裹,如果只有一个元素,后边必须加上逗号

    tuple = (3,)
    print(tuple)
    (3,)
    tu = ()
    type(tu)
    <type 'tuple'>
    # 空元组
    
  • 元组不支持任何修改,只能读取元素

    tuple[0]
    3
    for i in tu:
        print(i) 
    1、2、3、4、55
    # 索引和列表中的使用方法完全一样
    tuple[0] = 34
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item assignment
    tuple.append(2333)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'tuple' object has no attribute 'append'
    del tuple[0]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object doesn't support item deletion
    
  • 虽然元组是不可变的,但是如果元素中有可变元素如列表,那么可变元素中的元素是可以修改的,但可变元素本身不能变

    tuple = (1, '23', '这是字符串', [])
    print(tuple)
    tuple[3].append(1)
    print(tuple)
    tuple[3].insert(2, 3)
    print(tuple)
    # 结果是:
    (1, '23', '这是字符串', [])
    (1, '23', '这是字符串', [1])
    (1, '23', '这是字符串', [1, 3])
    

range()用法

  • range()是一个可迭代的对象

  • range(m, n), 遍历的结果下标是从m到n-1

  • range(m, n, y) y表示的是步伐

    for i in range(0, len(tu), 2):
        print(tu[i], end='、')
    1、3、4、5、6
    
    tu = [1,2,3,3,4,5,5,6,6]
    for i in range(len(tu)-1, 0, -2):
        print(tu[i])
    6
    5
    4
    3
    # 注意反向遍历的时候,左侧索引值必须-1, 步伐必须是负数
    

Note

切片操作的到的对象类型和原对象类型一致, 切片不会改变对象类型

猜你喜欢

转载自www.cnblogs.com/ddzc/p/12168475.html