zoukankan      html  css  js  c++  java
  • 四、列表 元组

    1. 列表(list)

    特性

    • 承载任意的数据类型,存储大量的数据

    • 查询速度比较慢

    创建

    l = [1, 2, 'hello']		# 列表格式
    l = list('abc')		# ['a','b','c']
    
    • 列表与列表相加
    • 列表与数字相乘
    l1 = ['你好',123]
    l2 = ['hello',456]
    print(l1+l2)	# ['你好', 123, 'hello', 456]
    print(l1*2)		# ['你好', 123, '你好', 123]
    

    切片

    例:l = [100, '你好',True]

    • 索引:列表内以逗号分割为一个元素,每个元素可保留自己的数据类型
    l[1]		# 100 <class 'int'>
    l[-1]		# True <class 'bool'>
    
    • 切片:与字符串切片用法相同
    l[:2]			# [100, '你好']
    l[-2::-1]		# ['你好', 100]
    

    增删改查

    • 追加 :list.appeng(元素)

    • 插入 :list.insert(索引, 元素)

    • 迭代追加 :list.extend(序列)(可追加序列中的多个值)


    • 按索引删除 :list.pop(索引)(删除并返回删除的值,默认删除最后一个元素)

    • 按切片删除 :del list[切片](与字符串切片步长相同)

    • 指定元素删除 :list.remove(元素)(如果有重名元素,仅删除第一个)

    • 清空 :list.clbear()


    • 按索引改:list[索引] = 改的值

    • 按切片改:切片可以迭代改值,加步长要改动的元素必须与迭代的元素一一对应

    l = ['a',2,'b',4]
    l[1:] = 'bc'     	# ['a','b','c']
    l[::2] = '13'		# [1,2,3,4]
    

    • 按切片:print(l[::2])
    • for循环:for i in l:print(i)

    循环注意:循环列表时,改变列表大小会影响索引

    • 切片删除:del l1[1::2]
    • 倒序法删除:for i in range(len(l1)-1,-1,-1):
    • 思维置换:将满足条件的放入新列表

    嵌套

    lb = [1,2,'你好',[1,'hello',3,]]

    • 索引嵌套获取嵌套的列表:lb[-1][1] # hello
    • 嵌套改值:lb[-1][1] += '!' # hello!

    其他操作

    排序命令(通常用于数字列表)

    • 升序 :list.sort()

    • 降序 :list.sort(reverse=1)

    • 反转 :list.reverse()

    统计

    • 计数:list.count(对象)(统计元素2出现的次数)

    • 获取长度:len(list)(输出列表有多少元素)

    • 获取索引:list.index(元素)(返回元素首次出现列表的下标,没有此元素会报错)

    enumerate() 列举

    将可迭代对象的每个元素和对应的序号组合成序列为元组,可以指定序号的起始值

    语法enumerate(sequence, start=0)

    • sequence:序列、可迭代对象(如:列表、元组、字符串)
    • start:起始序号,可自定义起始值,默认为 0
    l1 = ['a', 'b', 'c']
    for i in enumerate(l1):print(i)      # [(0, 'a'), (1, 'b'), (2, 'c')]
    for i in enumerate(l1, start=6):print(i)    # [(6, 'a'), (7, 'b'), (8, 'c')]
    for a,b in enumerate(seq):print(a, b)		# 拆包
    

    2. 元祖(tuple)

    不可变的只读数据类型,有序排列

    t = (1, [1, 2])

    索引查看:print(y[0])		# (1)
    切片查看:print(y[::-1])		# [1,2]
    循环查看:for i in t:print(i)	# 循环元素
    元组长度:len(t)				# 2
    

    • 可变数据类型的子元素内部可以变动
    y[-1].append(4)			# 元组内列表是可变数据类型,内部可以增加
    print(y)				# (1, [1, 2, 3])
    

    • 单元素的元组,一定要添加一个逗号
    y = ('meet')
    print(type(tu))			# <class 'str'>
    tu = ('meet',)
    print(type(tu))  		# <class 'tuple'>
    

    • 元组的拆包
    c = (1, 2)				# 元组不可被更改内容,但可以赋值于变量
    a, b = c				# 元素必须一一对应
    print(a, b)				# 1 2
    

    • 元组的嵌套:索引嵌套获取嵌套的元组
    y = (1, 2, ('a', 'b'))
    print(y[-1][-1])			# b
    

    其他操作

    • 计数tuple.count(元素)(某元素出现的次数)
    t = (1,2,2,2,3,4)
    print(t.count(2))       # 3
    
    • 查找下标tuple.index(元素)(通过元素找索引,找到第一个就返回,找不到就报错)
    t = ('hello','hi','hello')
    print(t.index('hello'))		# 0
    

    range() 范围

    可创建一个整数元组,可控制数字的范围,类似切片

    语法range(start, stop, step)

    • start:起始值,默认为 0 可不写
    • stop:结束值,实际取值要 +1
    • step:步长值,默认为 1 可不写
    单值:range(4) 				# (0, 1, 2, 3)
    双值:range(3, 6)				# (3, 4, 5)
    三值:range(6, 3, -1)			# (6, 5, 4)
    切片:print(range(4)[-1])		# 3
    
    • 与for循环结合
    for i in range(1,9): print(i)       # 1-10
    for i in range(2,11,2): print(i)       # 1-10偶数 
    for i in range(10,0,-1): print(i)       # 10-1
    
    • 依次输出列表的所有索引
    lb = [1, 2, 3,'a','b']
    for i in range(len(lb)): print(i)		# 获取列表长度为range值
    

  • 相关阅读:
    Mootools中的Class应用
    预初始化对象(OnPreInit)
    新博客开张
    ASP.NET获取客户端相关信息
    UpdatePannel中JS不执行问题
    KU990 JVAVA修改全屏
    textbox 增加click事件
    JS引用顺序的问题
    传统三层架构
    ORCALE 相关操作
  • 原文地址:https://www.cnblogs.com/wzos/p/12523128.html
Copyright © 2011-2022 走看看