[]
包围,元素之间用逗号分隔# 1、通过构造函数创建
# 创建空列表
li1 = list()
# 字符串
li1 = list('hogwarts')
print(type(li1),li1)
#类型: ;内容:['h', 'o', 'g', 'w', 'a', 'r', 't', 's']
li1_1 = list((1, 2, 3)) # 元组
li1_2 = list({4, 5, 6}) # 集合
li1_3 = list({4, 5, 6}) # 字典
li1_4 = list(1,2,{4, 5, 6},{4, 5, 6}) #混合内容
# 2、中括号创建并填充元素
li2 = [] # 空列表
li2 = [1, 2, 3] # 直接填充对象
print(type(li2), li2)
#打印结果: [1, 2, 3]
#3.列表推导式
li3=[i for i in range(1,11) if i%2==0]
print(type(li3),li3)
#打印结果: [2, 4, 6, 8, 10]
li = [1, 2, 3, 4, 5]
# 1、正向索引
print(li[0]) # 打印1
print(li[3]) # 打印4
# 2、反向索引
li = [1, 2, 3, 4, 5]
print(li[-1]) # 打印 5
切片: [start: stop: step]
# 切片基本用法
li = ['h', 'o', 'g', 'w', 'a', 'r', 't', 's']
print(li[0:5:2]) # 打印['h', 'g', 'a']
print(li[2:4]) # 省略了step,打印['g', 'w']
print(li[:4]) # 省略了start和step,打印['h', 'o', 'g', 'w']
print(li[2:]) # 省略了stop和step,打印['g', 'w', 'a', 'r', 't', 's']
print(li[::2]) # 省略start和stop,打印['h', 'g', 'a', 't']
print(li[::-1]) # 特殊的切片写法:逆序打印['s', 't', 'r', 'a', 'w', 'g', 'o', 'h']
重复:
*
运算符可以重复生成列表元素。# 1、重复
li = [1] * 5
print(li) # 打印[1, 1, 1, 1, 1]
合并:
+
加号运算符,可以将两个列表合二为一。# 2、合并
li1 = [1, 2, 3]
li2 = [99, 100]
print(li1 + li2) # 打印[1, 2, 3, 99, 100]
li = [1, 2, 3]
# in
print(1 in li) # 返回True
print(100 in li) # 返回False
# not in
print(1 not in li) # 返回False
print(100 not in li) # 返回True
append(item)
:将一个对象 item 添加到列表的末尾。# 添加元素
# 添加元素
li = []
li.append(1)
li.append(3.14)
li.append("hogwarts")
li.append([6, 6, 6])
li.append((1.2, 1.5))
li.append({'msg': "Hello"})
print(li) # 打印列表: [1, 3.14, 'hogwarts', [6, 6, 6], (1.2, 1.5), {'msg': 'Hello'}]
print(len(li)) # 获取列表元素个数: 6
extend(iterable)
:将一个可迭代对象的所有元素,添加到列表末尾。# extend()的用法
li = []
li.extend('hogwarts') # 添加的是字符串的所有字母
li.extend([1, 2, 3]) # 接收列表的所有元素
li.extend((4, 5, 6)) # 接收元组的所有元素
li.extend({'a': 1, 'b': 2}) # 接收字典的所有key值
print(li)
#打印结果:['h', 'o', 'g', 'w', 'a', 'r', 't', 's', 1, 2, 3, 4, 5, 6, 'a', 'b']
insert(index, item)
:将一个对象插入到指定的索引位置li = [0, 1, 2]
print("插入前: ", li) # 打印 [0, 1, 2]
# 在索引0的位置插入元素
li.insert(0, 'hogwarts')
print("插入后: ", li) # 打印 ['hogwarts', 0, 1, 2]
pop(index)
或 pop()
letters = ['h', 'o', 'g', 'w', 'a', 'r', 't', 's']
# 传入索引3,弹出元素 w
n1 = letters.pop(3)
print(n1) # 打印 w
# 不传参数,默认弹出末尾元素
n2 = letters.pop()
print(n2) # 打印 s
remove(item)
li = ['h', 'o', 'g', 'w', 'a', 'r', 't', 's']
print(len(li)) # 打印 8
# 1、删除指定元素'h'
li.remove('h')
print(li) # 打印 ['o', 'g', 'w', 'a', 'r', 't', 's']
print(len(li)) # 打印 7
# 2、移除第一个2
li = [1, 2, 3, 2, 1]
li.remove(2)
print(li) # 打印 [1, 3, 2, 1]
# 3、删除不存在的元素,会报ValueError错误
li = [1, 2, 3]
li.remove(100)
sort(key=None, reverse=False)
key
:指定带有一个参数的函数,用于从每个列表元素中提取比较键。reverse
:默认值为 **False 表示升序,**为 True 表示降序nums = [2, 4, 3, 1, 5]
# 1、不传参数,默认升序,数字从小到大排列
nums.sort()
print(nums) # 打印 [1, 2, 3, 4, 5]
# 2、指定key=len,按元素的长度排序
words = ['Python', 'Java', 'R', 'Go']
words.sort(key=len)
print(words) # 打印 ['R', 'Go', 'Java', 'Python']
# 3、指定reverse=True,降序
nums = [2, 4, 3, 1, 5]
nums.sort(reverse=True)
print(nums) # 打印 [5, 4, 3, 2, 1]
reverse()
:将列表中的元素顺序反转# 反转顺序
nums = [8, 1, 5, 2, 77]
nums.reverse()
print(nums) # 打印[77, 2, 5, 1, 8]
# 1、创建嵌套列表
li_2d = [['a', 'b', 'c'], [1, 2, 3]]
print(type(li_2d)) # 打印
print(len(li_2d)) # 打印 2
# 2、访问嵌套列表中的元素
print(li_2d[0][2]) # 打印 'c'
[x for x in li if x ...]
"""
实例:将 1-10 中的所有偶数平方后组成新的列表
"""
# 1、传统解决方案
result = []
for ele in range(1, 11):
if ele % 2 == 0:
result.append(ele ** 2)
print(result) # 打印 [4, 16, 36, 64, 100]
# 2、使用列表推导式
result = [ele ** 2 for ele in range(1, 11) if ele % 2 == 0]
print(result) # 打印 [4, 16, 36, 64, 100]
因为元祖不可变,通常我们把元祖当做常量列表
tuple(iterable)
使用构造方法,tuple中的元素是可迭代对象中的所有元素
# 1、直接使用逗号分隔
t1 = 1, 2, 3
print(type(t1),t1)
# (1, 2, 3)
t1_1=1,
print(type(t1_1),t1_1) # (1,)
t1_2=(1,)
print(type(t1_2),t1_2) # (1,)
t1_3=(1)
print(type(t1_3),t1_3) # 1
#注意:使用此方式创建元素,如果只有一个元素的话,单一元素后面的逗号不可省略。都这会被认为是其他类型
# 2、通过小括号填充元素
t2 = (1, 2, 3)
print(type(t2),t2)
# (1, 2, 3)
t3 = ('a', 'b', 'c')
print(type(t3),t3)
# ('a', 'b', 'c')
# 3、通过构造函数tuple()
t4 = tuple()
print(type(t4),t4)
# ()
t5 = tuple([1, 2, 3])
print(type(t5),t5)
# (1, 2, 3)
#t5中的元素,是可迭代对象[1,2,3]中元素
t = tuple(range(1, 6))
# 正向索引
print(t[2])
# 反向索引
print(t[-1])
[start: stop: step]
:
# 切片的使用
t = (1,2,3,4,5,6)
print(t[:]) #(1, 2, 3, 4, 5, 6)
print(t[:-2]) #(1, 2, 3, 4)
print(t[2:4]) #(3, 4)
print(t[2:5:2]) #(3, 5)
# 特殊的切片写法:逆序
print(t[::-1]) #(6, 5, 4, 3, 2, 1)
index(item)
t = (1, 3, 2, 3, 2)
print(t.index(3)) #1
t = ('h', 'o', 'g', 'w', 'a', 'r', 't', 's', 'a')
print(t.index('a')) #4
count(item)
:返回某个元素出现的次数。t = (1, 2, 2, 3, 3, 3, 3)
print(t.count(3)) #4
t = ('h', 'o', 'o', 'o', 'g', 'w', 'a', 'r', 't', 's')
print(t.count('a')) #1
元组解包:把一个可迭代对象里的元素,一并赋值到由对应的变量组成的元组中。
注意:元祖解包要求变量个数和元素个数一致
# 传统逐个赋值的方式
t = (1, 2, 3)
a = t[0]
b = t[1]
c = t[2]
print(a, b, c) #1 2 3
# 使用元组解包平行赋值
a, b, c = (1, 2, 3)
print(a, b, c) # 1 2 3
相同点
区别
()
,列表使用 []
{}
包围,对象相互之间使用逗号分隔{}
填充元素注意:创建空集合是不可以单独使用
{}
# 1、使用大括号{}填充元素
st1 = {1, 2, 3}
print(type(st1),st1) # {1, 2, 3}
st2 = {'a', 'b', 'c'}
print(type(st2),st2) # {'b', 'c', 'a'}
# 2、使用构造方法创建集合
st3 = set() # 空集合
print(type(st3),st3) # set()
st4 = set('hogwarts')
print(type(st4),st4) # {'w', 's', 'h', 't', 'o', 'g', 'r', 'a'}
li = [1, 1, 2, 2, 3, 3]
st5 = set(li)
print(type(st5),st5) # {1, 2, 3}
# 3、使用集合推导式
st6 = {x for x in li}
print(type(st6),st6) # {1, 2, 3}
# 注意:不要单独使用{ }来创建空集合
st7 = {} # 这是字典类型
print(type(st7),st7) # {}
"""集合使用:成员检测"""
st = {1, 2, 3, 4, 5}
# in
print(2 in st) #True
# not in
print(99 not in st) #True
add(item)
:将单个对象添加到集合中"""集合方法 add()"""
# 添加元素
st = {1, 2, 3}
st.add(99)
st.add('hogwarts')
print(st) #{1, 2, 99, 3, 'hogwarts'}
update(iterable)
"""集合方法 update()"""
li = [1, 2, 3]
tup = (2, 3, 4)
st = {'a', 'b', 'c'}
# 1、批量添加列表中的元素
st1 = set()
st1.update(li)
# 2、批量添加元组中的元素
st1.update(tup)
# 3、批量添加集合中的元素
st1.update(st)
print(st1) # {1, 2, 3, 4, 'c', 'b', 'a'}
remove(item)
:从集合中移除指定元素 item。"""集合方法 remove()"""
# 1、删除已存在的元素
st = {1, 2, 3, 4, 5}
st.remove(2)
print(st) #{1, 3, 4, 5}
# 2、删除不存在的元素
# st.remove(1024) # KeyError
discard(item)
:从集合中移除指定对象 item。"""集合方法 discard()"""
# 1、删除已存在的元素
st = {1, 2, 3, 4, 5}
st.remove(2)
print(st) #{1, 3, 4, 5}
# 2、删除不存在的元素
st.discard(1024)
print(st) #{1, 3, 4, 5}
pop()
:随机从集合中移除并返回一个元素。"""集合方法 pop()"""
# 1、随机删除某个对象
st = {1, 2, 3, 4, 5}
item = st.pop()
print(item, st) #1 {2, 3, 4, 5}
# 2、集合本身为空会报错
st = set()
st.pop() # KeyError
clear()
:清空集合,移除所有元素"""集合方法 clear()"""
# 1、清空集合
st = {1, 2, 3, 4, 5}
st.clear()
print(st) # set()
intersection()
&
"""集合运算:交集"""
# 交集运算
set1 = {1, 3, 2}
set2 = {2, 4, 3}
print(set1.intersection(set2)) #{2, 3}
print(set1 & set2) #{2, 3}
union()
|
"""集合运算:并集"""
# 求两个集合的并集
set1 = {1, 3, 2}
set2 = {2, 4, 3}
print(set1.union(set2)) #{1, 2, 3, 4}
print(set1 | set2) #{1, 2, 3, 4}
difference()
-
"""集合运算:差集"""
# 集合求差集
set1 = {1, 3, 2}
set2 = {2, 4, 3}
#属于集合1,不属于集合2
print(set1.difference(set2)) #{1}
print(set1 - set2) #{1}
{x for x in ... if ...}
# 使用推导式生成集合
st = {x for x in 'hogwarts' if x in 'hello world'}
print(st) #{'w', 'o', 'h', 'r'}
{}
包围# 1、使用大括号填充键值对
dc = {'name': 'Harry Potter', 'age': 18}
print(type(dc), dc) # {'name': 'Harry Potter', 'age': 18}
# 2、使用字典构造方法
dc1 = dict() # 空字典
dc2 = dict(name="Harry Potter", age=18) # 关键字参数赋值
print(type(dc2), dc2) # {'name': 'Harry Potter', 'age': 18}
dc3 = dict([("name", "Harry Potter"), ("age", 18)])
print(type(dc3), dc3) # {'name': 'Harry Potter', 'age': 18}
# 3、使用字典推导式
dc4 = {k: v for k, v in [("name", "Harry Potter"), ("age", 18)]}
print(type(dc4), dc4) # {'name': 'Harry Potter', 'age': 18}
[key]
。"""字典使用:访问元素"""
dc = {"name": "Harry Potter", "age": 18}
# 1、访问存在的key
print(dc["name"]) # Harry Potter
print(dc["age"]) # 18
# 2、访问不存在的key,会报KeyError错误
print(dc['hobby']) # KeyError: 'hobby'
dict[key] = value
"""字典使用:操作元素"""
dc = {"name": "Harry Potter", "age": 18}
# 1、修改年龄,改为20
dc['age'] = 20
print(dc) # {'name': 'Harry Potter', 'age': 20}
# 2、新增hobby字段
dc['hobby'] = 'Magic'
print(dc) # {'name': 'Harry Potter', 'age': 20, 'hobby': 'Magic'}
"""字典使用:嵌套字典"""
dc = {"name": "Harry Potter", "age": 18, "course": {"magic": 90, "python": 80}}
# 1、获取课程Magic的值
print(dc['course']['magic']) #90
# 2、把python分数改成100分
dc['course']['python'] = 100
print(dc) #{'name': 'Harry Potter', 'age': 18, 'course': {'magic': 90, 'python': 100}}
keys()
"""字典方法 keys()"""
dc = {"name": "Harry Potter", "age": 18}
keys = dc.keys()
print(type(keys), keys) # dict_keys(['name', 'age'])
# 1、遍历查看所有的键
for key in keys:
print(key)
# name
# age
# 2、将视图对象转成列表
print(list(keys)) #['name', 'age']
values()
"""字典方法 values()"""
dc = {"name": "Harry Potter", "age": 18}
values = dc.values()
print(type(values), values) # dict_values(['Harry Potter', 18])
# 1、遍历查看所有的值
for value in values:
print(value)
# Harry Potter
# 18
# 2、将视图对象转成列表
print(list(values)) # ['Harry Potter', 18]
items()
(键, 值)
对) 组成的一个新视图对象。"""字典方法 items()"""
dc = {"name": "Harry Potter", "age": 18}
items = dc.items()
print(type(items), items) # dict_items([('name', 'Harry Potter'), ('age', 18)])
# 1、遍历查看所有的项
for item in items:
print(item)
# ('name', 'Harry Potter')
# ('age', 18)
# 2、将视图对象转成列表
print(list(items)) # [('name', 'Harry Potter'), ('age', 18)]
get(key)
"""字典方法 pop()"""
dc = {"name": "Harry Potter", "age": 18}
# 1、访问存在的key
name = dc['name']
print(name) #Harry Potter
# 2、访问不存在的key
hobby = dc.get('hobby')
print(hobby) # None
update(dict)
dc = {"name": "Harry Potter", "age": 18}
dc.update({"age": 20, "hobby": "magic"})
print(dc) # {'name': 'Harry Potter', 'age': 20, 'hobby': 'magic'}
pop(key)
"""字典方法 pop()"""
dc = {"name": "Harry Potter", "age": 18}
# 1、弹出
item = dc.pop("age")
print(dc, item) #{'name': 'Harry Potter'} 18
# 2、删除不存在的key
# dc.pop("hobby") # 报错keyError
{'a': 1, 'b': 2, 'c': 3}
,找出其中所有大于 1 的键值对,同时 value 值进行平方运算。# 未使用字典推导式的写法
dc = {'a': 1, 'b': 2, 'c': 3}
d_old = dict()
for k, v in dc.items():
if v > 1:
d_old[k] = v ** 2
print(d_old) #{'b': 4, 'c': 9}
# 使用字典推导式
d_new = {k : v ** 2 for k,v in dc.items() if v > 1 }
print(d_new) #{'b': 4, 'c': 9}