python基础3
1、列表
- 形式:使用方括号括起来,元素之间用逗号隔开
li = [1,2,3]
- 索引
li = [1,2,3] s = li[1] #s=2
- 切片
#和字符串相同(python基础二中) l1 = li[0:2]
- 添加元素
#在尾部添加一个元素 li.append(a) #a为元素 #在指定位置添加元素 li.insert(1,a) #在第二个位置添加a #在尾部添加可迭代对象中的所有元素 li.extend(a) #a为可迭代对象(比如列表)
- 删除元素
#通过索引删除元素并返回,如果不指定索引则删除最后一个 s = li.pop(0) #s = li[0] #删除第一个符合的值 li.remove(a)
- 长度
#len是通用的方法,对象都可以使用 length = len(li)
- 统计某元素个数
s = li.count(1) #s为1的数量
- 匹配元素的索引
i = li.index(3) #i为3所在位置的索引
- 排序
#正向排序 li.sort() #不返回东西,直接修改原列表 #逆向排序 li.sort(reverse=True) #也可以使用sorted进行排序,返回一个新列表,不修改原来的列表 new_li = sorted(li)
- 翻转
li.reverse() # [1,3,2] -> [2,3,1] 翻转不会进行排序
- 清空列表
li.clear()
- 删除列表
del li
2、元组
- 形式:用圆括号括起来,元素用逗号隔开。
t = (1,2,3)
- 不可以修改,但如果元素是列表之类的对象,可以修改列表中的元素。(既不是直属于元组的元素)
t = (1,2,[3,4]) #不合法的做法 t[0] = 3 #合法的做法 t[2][0] = 1
3、字典
- 数据类型划分:可变数据类型,不可变数据类型
- 不可变数据类型(可哈希):元组,bool,int,str
- 可变数据类型(不可哈希):list,dict,set
- 字典是python中的映射类型,采用键值对(key-value)的形式存储数据。对key进行哈希运算,根据结算结果决定value的存储地址,key必须是可哈希的。
- 形式
dic = { key1:value1, key2:value2, ... }
- 增
#1.通过直接赋值的方式添加,如果key已经存在,则是修改原来的kv dic = {'num':18,'age':12} dic['num'] = 19 #修改 dic['name'] = 'hsr' #添加 #2.通过setdefault方法 dic.setdefault('weight') #添加键值对'weight':None dic.setdefault('weight',130) #添加键值对'weight':130
- 删
#1.使用pop dic.pop('num') #删除key='num'的键值对,并把value返回 dic.pop('grade','No the key') #如果没有grade这个键,则返回No the key #2.popitem dic.popitem() #随机删除一个 #3.del del dic['num']
- 改
#1.直接赋值 dic['num'] = 18 #2.update方法 dic2 = {'address':'xiamen','age'=14} dic.update(dic2) #将dic2中的键值对添加到dic中,如果存在了就修改
- 查
#1.get方法 value = dic.get(key, '默认值') #不存在返回默认值 #2 dic.keys() #获得包含key的可迭代对象 dic.values() #获得包含value的可迭代对象 dic.items() #获得包含每一对键值对的可迭代对象 #可以通过for循环进行遍历 for k,v in dic.items(): pass
- 小点:一行互换a,b的值
a, b = b, a #原理:Python的变量并不直接存储值,而只是引用一个内存地址,交换变量时,只是交换了引用的地址。
- 循环遍历字典的时候,不可以删除字典的元素
4、 集合
- 集合是可变的数据类型,里面的元素必须是不可变数据类型,无序不可重复
- 创建
#法1,使用set() set1 = set([elem1,elem2....]) #法2,直接赋值 set2 = {1,2,3} #集合和字典都是用花括号,但是里面的元素不是键值对
- 增
#add,当成一个元素添加 set1.add(4) #update,迭代添加(类似列表的extend) set1.update('abc') #结果是添加a,b,c三个元素
- 删
#随机删除,将其返回 s = set1.pop() #指定删除元素,没有则报错 set1.remove(3) #清空集合 set1.clear() #删除集合 del set1()
- 查
#使用for循环 for i in set1: pass
- 交集
s = set1 & set2
s = set1.intersection(set2) - 并集
s = set1 | set2
s = set2.union(set1) - 反交集
s = set1 ^ set2
s = set1.symmetric_difference(set2) - 差集
s = set1 - set2
s = set1.difference(set2) - 子集与超集
set1.issubset(set2) b1 = set1 < set2 #为True则set1是set2的子集 set2.issuperset(set1) b2 = set2 > set1 #为True则set2是set1的超集
- 不可变集合
#元素不能修改 s = frozenset(set1)
5、join
- 用来将可迭代对象转为字符串
- 列表->字符串 ====>join,字符串->列表=====>split
li = ['i','love','you'] s = ' '.join(li) #结果 s = 'i love you'
6、用range生成数字列表
-
#生成1到100的数字列表:[1,2,...,100] for i in range(1,101): #不包含第二个参数,可以理解为左闭右开区间 pass #生成100以内的偶数 for i in range(0,101,2): #2是步长 pass #生成逆向数字列表[100,99,....,1] for i in range(100,-1,-1): pass #注意如果像这样写参数,没有元素,也不会报错 for i in range(0,10,-1): pass