python笔记1——基础

本文介绍了Python的基础数据结构,包括列表、元组的特点及性能对比,如列表的动态增长与元组的不可变性。详细讲解了列表的创建、访问、修改、添加和删除元素等操作,以及元组的访问和排序。同时,涵盖了字典和集合的创建、访问、增删改查和遍历,强调了它们在查找、添加和删除操作上的高效性能。此外,还提及了字符串的操作和格式化方法。
摘要由CSDN通过智能技术生成

1、列表(list)与元组(tuple)

列表和元组都是可以放置任意数据类型的有序集合

l = [1, 2, 'hello', 'word']

tup = ('jack', 22)

1.1 列表与元组的特点

(1)列表是动态增长的,长度大小不固定,可以随意地增加、删除或者改变元素;
(2)元组是静态的,长度大小固定,无法增加、删除或者改变。

1.1.1 存储方式的差异

(1)列表在存储数据的时候,需要存储指针来指向对应的元素,同时需要额外存储已经分配的长度大小,从而实时追踪列表空间的使用情况,当空间不足时可以及时分配额外空间。这样的机制保证了其操作的高效性,减小了每次增加/删除操作时空间分配的开销,增加/删除的时间复杂度均为O(1);
(2)元组的存储空间是固定的。

1.1.2 列表与元组的性能

(1)从存储方式的区别看出,元组比列表更加轻量级,总体上元组的性能要略优于列表;
(2)python在后台会对静态数据做一些资源缓存(resource caching)。通常来说,因为垃圾回收机制的存在,如果一些变量不被使用了,python就会回收它们所占用的内存,返还给操作系统,以便其他变量或应用使用。但对于一些静态变量,比如元组,如果它不被使用并且占用空间不大时,python会这暂时缓存这部分内存,这样下次再创建同样大小的元组时,就可以直接分配之前缓存的内存空间,这样就能大大加快程序的运行速度;
(3)如果想要增加、删除或改变元素,那么显然列表更优

1.1.3 二者的使用场景

(1)如果存储的数据和变量不变,元组比较适合;
(2)如果存储的数据和变量是可变的,列表更适合。

1.2 操作列表

1.2.1 列表的创建

创建一个空列表

empty_list = list()

# []是一个内置的c函数,可以直接被调用,效率比较高
empty_list = []

1.2.2 访问列表

(1)通过索引或切片来访问列表的元素,索引从0开始

变量名[索引]

(2)返回元素出现的次数

变量名.count(元素值)

(3)返回元素的索引

变量名.index(元素值)

1.2.3 修改、添加和删除元素

(1)修改

变量名[索引] = <元素值>

(2)添加

# 在列表末尾添加元素

变量名.append(元素值)


# 在列表中插入元素,相当于将列表中既有的元素都右移一个位置

变量名.insert(索引,元素值)

(3)删除

# 删除原列表中的元素,不可复用
del 变量名[索引]

# 逻辑列表中的元素,可以赋用,默认删除最后一个元素
变量名.pop(索引)

# 根据值删除元素,只删除列表中第一个出现的值,可以赋用
变量名.remove(元素值)

1.2.4 排序

# 永久性排序,默认从小到大(字母一样),相反顺序需要传递参数reverse=True
变量名.sort()

# 临时排序,不改变原有顺序
变量名.sorted()

# 倒着打印列表
变量.reverse()

1.2.4 遍历列表

# 遍历列表/元组中的每个元素
for 临时变量 in 列表变量:
	循环语句

1.2.5 列表解析

列表变量 = [含临时变量的表达式 for 临时变量 in range()]

示例:squares = [value**2 for value in range(1,11)]
输出:[1,4,9,16,25,36,49,64,81,100]

1.3 操作元组

对已有的元组做任何修改,只能重新开辟一块内存,创建新的元组

1.3.1 增加元素

tup = (1, 2, 3, 4)
new_tup = tup + (5, )
new_tup
(1, 2, 3, 4, 5)

1.3.2 访问元组

类似于列表

1.3.3 排序

只有sorted()和reversed()函数

2、字典(dict)和集合(set)

(1)字典是一系列键值对组成的元素的集合,在python3.7+被确认为有序,长度大小可变,元素可以任意地删减和改变,相比于列表和元组性能更优,特别是对于查找、添加和删除操作,都能在常数时间复杂度内完成;
(2)集合和字典基本相同,唯一的区别就是集合没有键值对,是一系列无序的、唯一的元素组合。
(3)字典的内部组成是一张哈希表,可以直接通过键的哈希值找到对应的值,用字典存储数据进行查找时,只需O(1)的时间复杂度即可完成;集合是高度优化的哈希表,里面元素不能重复,其添加和查找操作只需O(1)的复杂度

2.1 字典和集合的创建

无论是键还是值,都可以是混合类型

字典

d1 = {
   }
d1 = {
   'name': 'jack', 'age': 20, 'gender': 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值