第五章 数据结构6
第五章 数据结构6
相关代码如下
from sys import getsizeof
values = (x * 2 for x in range(100000000))
print("gen:", getsizeof(values))
print(values)
# print(len(values)) 会报错,因为生成器是无大小的,仅在遍历时才会有值
values = [x * 2 for x in range(10)]
print("list:", getsizeof(values))
# 生成器所占内存皆一致,且在大额的数值处理情况下比列表所占内存更为简洁
# 二者区别在于定义时的括号类型,生成器仅在使用时进行遍历
# 拆包操作
first = [1, 2]
second = [3]
values = [*first, "a", *second, *"Hello"] # 拆包操作符*可将列表、字符串等拆分为单独个体
print(values)
first = {"x": 1}
second = {"x": 10, "y": 2}
combined = {**first, **second, "z": 1} # 对待字典时,拆包符为**,并且若对应键值有重复,仅保留最后一项
print(combined)
输出内容如下
gen: 112
<generator object <genexpr> at 0x0000028033836510>
list: 184
[1, 2, 'a', 3, 'H', 'e', 'l', 'l', 'o']
{'x': 10, 'y': 2, 'z': 1}