第五章 数据结构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}
posted @ 2021-09-06 21:12  tlott  阅读(28)  评论(0编辑  收藏  举报