"""
画出下列代码内存图
"""
list01 = [1,2]
# 将列表地址赋值给list02
list02 = list01
# 改变的是列表的第一个元素
list01[0] = 100
print(list02[0])# 100
list01 = [1,2]
# 将列表地址赋值给list02
list02 = list01
# 改变的是列表的第一个元素
list01 = [100]
print(list02[0])# 1
list01 = [1,2]
# 将列表中元素复制一份
# list02 = list01[:]
# 将列表中元素复制一份
list02 = list01.copy()
list01[0] = 100
print(list02[0])# 1
list01 = [1,[2,3]]
# 将列表中元素复制一份(只拷贝1层)
list02 = list01.copy() # 浅拷贝
list01[1][0] = 200
print(list02[1][0]) # ?200
import copy
list01 = [1,[2,3]]
# 将列表中元素复制一份(只拷贝1层)
# list02 = list01.深拷贝()
list02 = copy.deepcopy(list01) # 深拷贝
list01[1][0] = 200
print(list02[1][0]) # ?2
"""
列表推导式
练习:exercise01
"""
list01 = [3,5,6,7,9]
# 需求:创建新列表,每个元素是list01中的元素的平方
list02 = []
for item in list01:
list02.append(item ** 2)
print(list02)
# 语法:[对变量的操作 for 变量名 in 可迭代对象]
list03 = [item ** 2 for item in list01]
list01 = [3,5,6,7,9]
# 需求:创建新列表,如果元素是偶数,则将每个元素的元素的平方存入新列表
list02 = []
for item in list01:
if item % 2 == 0:
list02.append(item ** 2)
list03 = [item ** 2 for item in list01 if item % 2 == 0]
print(list03)
"""
列表推导式
练习:exercise01
"""
list01 = [3,5,6,7,9]
# 需求:创建新列表,每个元素是list01中的元素的平方
list02 = []
for item in list01:
list02.append(item ** 2)
print(list02)
# 语法:[对变量的操作 for 变量名 in 可迭代对象]
list03 = [item ** 2 for item in list01]
list01 = [3,5,6,7,9]
# 需求:创建新列表,如果元素是偶数,则将每个元素的元素的平方存入新列表
list02 = []
for item in list01:
if item % 2 == 0:
list02.append(item ** 2)
list03 = [item ** 2 for item in list01 if item % 2 == 0]
print(list03)
"""
元组
练习:exercise02/03
"""
# 1. 创建空元组
t01 = ()
t02 = tuple()
# 2. 创建具有默认值的元组
t01 = (1,2,3)
t01 = tuple("abcd")
t01 = (1,2,[4,5])
print(t01)
# 修改
# t01[2] = 100 元组元素不能修改
t01[2][0] = 100 # 修改的是元素第三个元素(列表)的元素.
# 3. 获取元素(索引 / 切片)
print(t01[:2])
# 获取元组所有元素
for item in t01:
print(item)
\# 倒序获取元组所有元素
for i in range(len(t01)-1, -1,-1):
print(t01[i])
t02 = ("a","b")
l02 = ["a","b"]
t03 = t02
l03 = l02
t02 += ("c","d") # 创建了新元组对象,改变了t02存储的地址.
l02 += ["c","d"] # 将["c","d"]追加到原列表中.
print(t02) # ('a', 'b', 'c', 'd')
print(t03) # ('a', 'b')
print(l03) # ['a', 'b', 'c', 'd']
# 如果元组只有一个元素,必须多写一个逗号,否则视为普通对象,不是元组对象.
t04 = (1,)
print(t04)
"""
字典
练习:exercise04/05
"""
# 创建空字典
d01 = {}
d02 = dict()
d01 = {"a":"A","b":"B"}
# d01 = dict("ab") # 分不清key value
d01 = dict([(1,2),(3,4)]) # {1: 2, 3: 4}
# 第一次增加
d01["c"] = "C"
# 第二次修改
d01["c"] = "CC"
# 读取元素(如果不存在则异常)
# 建议:在字典中读取元素,先判断存在,在进行读取.
if "d" in d01:
print(d01["d"])
print(d01)
# 删除
del d01["c"]
print(d01)
# 获取字典中所有元素:
for key in d01:
print(key)
print(d01[key])
# 获取字典中所有记录(元组)
for item in d01.items():
print(item[0]) # key
print(item[1]) # value
for k,v in d01.items():
print(k) # key
print(v) # value
# 获取所有键
for k in d01.keys():
print(k)
# 获取所有值
for v in d01.values():
print(v)
"""
字典推导式
"""
# key:数字 value:数字平方
# dic01 = {}
# for item in range(1,10):
# dic01[item] = item 2
#
# print(dic01)
#
# dic01 = {item:item 2 for item in range(1,10)}
dic01 = {}
for item in range(1, 10):
if item % 2 == 0:
dic01[item] = item ** 2
dic01 = {item: item ** 2 for item in range(1, 10) if item % 2 == 0}
print(dic01)