009.Python基础语法(八)——组合/序列数据类型——元组、列表、字典

Python组合数据类型——组合/序列数据类型——元组、列表、字典

元组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

列表

1.创建

l1 = []
l2 = [1]
l3 = ["a", "b", "c", "d"]
print(l1, l2, l3)
# 输出:[] [1] ["a", "b", "c", "d"]

l4 = list()
l5 = list("abc")
l6 = list(range(3))
print(l4, l5, l6)
# 输出:[] ["a", "b", "c"] [0, 1, 2]

2. 基本操作

在这里插入图片描述
创建、修改、删除、重复

3.函数

在这里插入图片描述

  • ls.index(target):查找列表元素target对应的索引

  • ls.sort():将列表中的元素从小到大进行排列,直接是在原列表中进行排列,没有返回值

  • extend():将指定的列表元素(或任何可迭代的元素)添加到当前列表的末尾

    fruits = ['apple', 'banana', 'cherry']
    cars = ['Porsche', 'BMW', 'Volvo']
    fruits.extend(cars)
    print(fruits)
    
    # res:['apple', 'banana', 'cherry', 'Porsche', 'BMW', 'Volvo']
    
  • 列表各项操作的时间复杂度

    • 列表的本质:over-allocated数组
    • 列表存储的是对象的引用,不是对象本身
    • append: 不需要扩容的情况下 O ( 1 ) O(1) O(1),需要扩容的情况下 O ( n ) O(n) O(n)
    • pop: 删除末尾的数据 O ( 1 ) O(1) O(1),删除指定位置的数据 O ( n ) O(n) O(n)
    • insert: O ( n ) O(n) O(n)
    • del: O ( n ) O(n) O(n)
    • len: O ( 1 ) O(1) O(1):在列表实现中,其内部维护了一个Py_ssize_t类型的变量表示列表内元素的个数,因此时间复杂度为O(1)
    • reverse: O ( n ) O(n) O(n)
    • sort: O ( n l o g n ) O(nlogn) O(nlogn)
  • 拓展:ls.sort()函数和sorted函数

    • sort是列表内置的函数,只能用于列表的排序,直接改变原来列表的排序,没有返回值
    • sorted可以用于任何可迭代的对象(字符串、列表、元组、字典),排序结果作为返回值,需要定义变量进行承接,原来列表内的顺序是不发生改变的
      sort(key, reverse)
      sorted(iterate, key ,reverse)
      以sorted为例,sort可参照该用法
      key:指定排序的关键字
      reverse:为True表示从大到小排列,为False表示从小到大(默认)
      >>>l=[('a', 1), ('b', 2), ('c', 6), ('d', 4), ('e', 3)]
      >>>sorted(l, key=lambda x:x[0])
      Out[39]: [('a', 1), ('b', 2), ('c', 6), ('d', 4), ('e', 3)]
      >>>sorted(l, key=lambda x:x[0], reverse=True)
      Out[40]: [('e', 3), ('d', 4), ('c', 6), ('b', 2), ('a', 1)]
      >>>sorted(l, key=lambda x:x[1])
      Out[41]: [('a', 1), ('b', 2), ('e', 3), ('d', 4), ('c', 6)]
      >>>sorted(l, key=lambda x:x[1], reverse=True)
      Out[42]: [('c', 6), ('d', 4), ('e', 3), ('b', 2), ('a', 1)]
      
      # 关于排序的拓展:
      def test1(nums):
          ans = sorted(nums, key=lambda x: (x[0], -x[1]))	
          """
          在第一个关键字排序的基础上
          允许第二个关键字更改第一个关键字相同的元素之间的排序
          如:将(2, 4), (2, 6)的排序改成(2, 6), (2, 4)
          """
          return ans
          
      def test2(nums):
          ans = sorted(nums, key=lambda x: x[0])
          ans = sorted(ans, key=lambda x: -x[1])	# 不会维持第一次排序的结果,自己排自己的
          return ans
      
      def main():
          nums = [[1, -2], [2, 6], [2, 8], [0, 4], [5, 7]]
          print(test1(nums))
          print(test2(nums))
      
      if __name__ == "__main__":
          main()
      
      
      
  • len(ls):求取列表长度

  • max(ls):求取列表中元素的最大值

  • min(ls):求去列表中元素的最小值

4.列表解析表达式

[i**2 for i in range(10)]
# 输出:[0, 1, 4, 9, 16, 5, 36, 49, 64, 81]
[(i, i**2) for i in range(10)]
# 输出: [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49), (8, 64), (9, 81)]
[i for i in range(10) if i%2 == 0]
# 输出:[0, 2, 4, 6, 8]

字典

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
update函数
在这里插入图片描述

enumerate()函数

1.功能

将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列
索引序列的形式:(数据,数据下标)

2.用途

一般用在for循环当中

3.示例

	>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
	>>> list(enumerate(seasons))
	[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
	>>> list(enumerate(seasons, start=1))       # 下标从 1 开始
	[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
经典示例
	>>>seq = ['one', 'two', 'three']
	>>> for i, element in enumerate(seq):
	...     print i, element
	... 
	0 one
	1 two
	2 three
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值