一、列表(list)
1、语法构造
例:li = [1,3,‘ab’]
(1)列表的元素可以是数字、字符串、列表等任何类型。
(2)列表元素有顺序,且可以被修改。
2、常用的方法
(1)append() 原来值最后追加
li = [1,3,'ab']
li.append(33)
print(li) #[1, 3, 'ab', 33]
(2)clear() 清空列表
li = [1,3,'ab']
li.clear()
print(li) #[]
(3)copy() 浅拷贝
li = [1,3,'ab']
v = li.copy()
print(v) #[1, 3, 'ab']
l1 = [1,2,["a",[11,12]]]
# 赋值
l2 = l1
l2[1] = 20
print(l1) # [1, 20, ['a', [11, 12]]]
# 赋值会使两个变量指向同一个对象
# 浅拷贝
l3 = l1.copy()
l3[1] = 200
l3[2][0] = "b"
print(l1) # [1, 20, ['b', [11, 12]]]
# 浅拷贝的变量指向的对象为:复制原对象的一级元素,但该一级元素仍然指向原对象的二级元素
# 深拷贝
import copy
l4 = copy.deepcopy(l1)
l4[0] = "A"
l4[2][0] = "B"
l4[2][1][0] = "C"
print(l4) # ['A', 20, ['B', ['C', 12]]]
print(l1) # [1, 20, ['b', [11, 12]]]
# 深拷贝的变量指向的对象是:复制原对象所有层级的元素
(4)count() 计算元素出现的次数
li = [1,3,'ab',3]
v = li.count(3)
print(v) #2
(5)extend() 扩展原列表,参数:可迭代对象
li = [1,3,'ab',3]
linew = li.copy()
li1 = [22,'ss']
li.append(li1)
print(li) #[1, 3, 'ab', 3, [22, 'ss']]
linew.extend(li1)
print(linew) #[1, 3, 'ab', 3, 22, 'ss']
(6)index() 根据值获取当前值索引位置(左边优先)
li = [1,3,'ab',3]
v = li.index(3)
print(v) #1
(7)insert() 在指定索引位置插入元素
li = [1,3,'ab',3]
li.insert(1,'abc')
print(li) #[1, 'abc', 3, 'ab', 3]
(8)pop() 删除某个值(1.指定索引;2. 默认最后一个),并获取删除的值
li = [1,3,'ab',3]
v = li.pop()
print(li,v) #[1, 3, 'ab'] 3
(9)remove() 删除列表中的指定值,左边优先
li = [1,3,'ab',3]
li.remove(3)
print(li) #[1, 'ab', 3]
del li[2] #也可以用关键字 del 删除
print(li) #[1, 'ab']
(10)reverse() 将当前列表进行翻转
li = [1,3,'ab',3]
li.reverse()
print(li) #[3, 'ab', 3, 1]
(11)sort() 列表的排序
li = [7,3,10,3]
linew = li.copy()
li.sort()
print(li) #[3, 3, 7, 10]
linew.sort(reverse=True)
print(linew) #[10, 7, 3, 3]
words = ['apple', 'banana', 'orange', 'kiwi']
# 使用字符串长度作为键进行排序
words.sort(key=len)
print(words)
# ['kiwi', 'apple', 'banana', 'orange']
3、其他特性
可以索引、切片
li = [7,3,10,3]
print(li[2]) #索引 10
print(li[1:-1]) #切片 [3, 10]
注:切片是生成一个新对象,但二级元素仍然指向原对象。
l1 = [1,2,[3],4]
l2 = l1[1:-1]
print(l2) # [2, [3]]
l2[1][0]=10
l2[0] = "A"
print(l2) # ['A', [10]]
print(l1) # [1, 2, [10], 4]
二、元组(tuple)
1、语法构造
例:tu = (11,22,‘aa’,44,)
其中,
(1)元组的元素有序,可以是数字、字符串、列表等任何类型。
(2)例子中最后的逗号可以不写,不过作为与形参的区分,推荐写。
(3)一级元素不可被修改,不能被增加或者删除
2、元组的方法
(1)count() 获取指定元素在元组中出现的次数
tu = (11,22,44,22)
v = tu.count(22)
print(v) #2
(2)index() 获取参数所在的索引
tu = (11,22,44,22)
v = tu.index(22)
print(v) #1
3、索引、切片
tu = (11,22,44,22)
v1 = tu[1]
v2 = tu[0:3]
print(v1,v2) #22 (11, 22, 44)
三、字典(dict)
1、语法构造
例:
dic = {
“key1”: ‘value1’,
“key2”: ‘value2’
}
注:
(1)key值为不变的值,如数字、字符串、元组
(2)value值可以为任意类型
(3)字典元素是无序的
2、常用的方法
(1)fromkeys() 根据序列,创建字典,并指定统一的值
v = dict.fromkeys(["k1",123,"999"],123)
print(v) #{'k1': 123, 123: 123, '999': 123}
(2)get() 根据key值获取value值;key不存在时,可以指定默认值(默认None)
dic = {
"key1": 'value1',
"key2": 'value2'
}
v1 = dic.get('key')
print(v1) #None
v2 = dic.get('key1','value3')
print(v2) #value1
v3 = dic.get('ke3','value3')
print(v3) #value3
(3)pop() 根据key值,删除并获取值。如果没有该key值,可以获得指定获取值。
dic = {
'key1': 'value1',
'key2': 'value2',
111: 222
}
v1 = dic.pop('key2') #{'key1': 'value1', 111: 222} value2
print(dic,v1)
v2 = dic.pop('1','aa') #{'key1': 'value1', 111: 222} aa
print(dic,v2)
(4)setdefault() 设置值。已存在,不设置,获取当前key对应的值。不存在,设置,获取当前key对应的值。
dic = {
'key1': 'value1',
'key2': 'value2',
}
v1 = dic.setdefault('key1','aa')
print(dic,v1) #{'key1': 'value1', 'key2': 'value2'} value1
v2 = dic.setdefault('key3','aa')
print(dic,v2) #{'key1': 'value1', 'key2': 'value2', 'key3': 'aa'} aa
(5) update() 更新元素数据
dic = {
'key1': 'value1',
'key2': 'value2',
}
dic.update({'key1':11,'key3':22})
print(dic) #{'key1': 11, 'key2': 'value2', 'key3': 22}
dic.update(k1='aa',k2='bb')
print(dic) #{'key1': 11, 'key2': 'value2', 'key3': 22, 'k1': 'aa', 'k2': 'bb'}
(6)keys()、values()、items() 获取key值/value值/key和value值。其中下面代码中,不写后面的方法,默认循环取key值。
dic = {
'key1': 'value1',
'key2': 'value2',
}
for k in dic.keys():
print(k)
'''
key1
key2
'''
for v in dic.values():
print(v)
'''
value1
value2
'''
for k,v in dic.items():
print(k,v)
'''
key1 value1
key2 value2
'''
3、其他特性
(1)可以用索引方式找到指定元素,但索引值为key值。例:
dic['key1]
(2)可以用del删除元素,例:
del dic[‘key1’]