文章目录
-
- 列表(list:[1,2,3])
- 元组(tuple:(1,2,3))
- 字典(dict:{key1:1, key2:2, key3:3})
- 集合(set:{1,2,3})
- 字符串(str)
- 条件循环结构
几种常用的数据类型显示方式如下图:
列表(list:[1,2,3])
列表本身是动态的数据结构,每次会提前申请一部分空间,直到用完以后再重新申请,而不是每次用多少申请多少,类似与C#中的StringBuilder
适用于数据或数量是可变的场景
元组(tuple:(1,2,3))
元组本身是静态结构,每次定义后就不可再变,每次变化相当于重新申请一个新的元组,特性类似于C#中的string。
适用于存储的数据和变量不变的场景。
字典(dict:{key1:1, key2:2, key3:3})
字典本身是一个键值对结构,可以动态申请,Key的存储是基于hash函数,因此等值查找的时间复杂度可以到O(1)。
集合(set:{1,2,3})
类似字典也是基于hash函数,不过只是一个集合,而没有键值对,集合是不能有重复值的,因此可以用于去重(sql distinct),这个的效率比列表高不少,下面例子可以查看到对比
字符串(str)
字符串跟C#里的string类似,有几个特点或区别
- 增加了三引号,即可以使用单引号,双引号和三引号
- 增加了切片操作,不过,一样可以索引读取,一样内容不可变
- +=操作做了优化,并非每次都重新省去空间,也可能是直接对将操作者后面增加buff(下面例子对比用时)
- 格式化输出使用.format方式,当然也可以直接用字符串拼接,只是格式化更易读
条件循环结构
# for + if
expression1 if condition else expression2 for item in iterable
# 等价于下面写法
for item in iterable:
if condition:
expression1
else:
expression2
# 仅IF
expression for item in iterable if condition
# 等价于下面写法
for item in iterable:
if condition:
expression
# 多个循环
expression1 if condition else expression2 for item1 in iterable1 for item2 in iterable2
# 等价于下面写法
for item1 in iterable1:
for item2 in iterable2:
if condition:
expression1
else:
expression2