Python学习笔记三——字典、集合、条件、循环语句
字典
定义:
字典使用键-值(key-value
)存储,具有极快的查找速度,dict
是用空间来换取时间的一种方法。dict
内部存放的顺序和key
放入的顺序是没有关系的。dict
根据key
通过哈希算法来计算value
的存储位置,key
必须是唯一的且不可变的对象,如字符串、数字、元组等。
创建:
可以通过dict = {key1 : value1, key2 : value2 }
形式创建字典,向字典添加新内容的方法是增加新的键-值对,修改或删除已有键-值对。
方法:
- 通过
in
判断key
是否存在。 - 通过
get()
方法返回指定键的值,如果key
不存在,可以返回None
,或者自己指定的value
。 str(dict)
输出字典,以可打印的字符串表示。- 删除字典:
(1).pop(key)
,删除字典给定键 key 所对应的值,返回值为被删除的值;
(2).删除键'Name'
:del dict['Name']
;
(3).清空字典:dict.clear()
;
(4).删除字典:del dict
。 - 其他方法:
函数 | 描述 |
---|---|
dict.copy() | 返回一个字典的浅复制 |
dict.fromkeys() | 创建一个新字典,以序列seq 中元素做字典的键,val 为字典所有键对应的初始值 |
dict.items() | 以列表返回可遍历的(键, 值) 元组数组,在遍历字典时,关键字和对应的值可以使用 items() 方法同时解读出来 |
dict.keys() | 返回一个迭代器,可以使用 list() 来转换为列表 |
dict.values() | 返回一个迭代器,可以使用 list() 来转换为列表 |
dict.setdefault(key, default=None) | 和get() 类似, 但如果键不存在于字典中,将会添加键并将值设为default |
dict.update(dict2) | 把字典dict2 的键/值对更新到dict里 |
popitem() | 随机返回并删除字典中的一对键和值(一般删除末尾键-值对) |
集合
特性:
集合(set
)是一个无序的不重复元素序列。set
和dict
类似,也是一组key
的集合,但不存储value
。在set
中,没有重复的key
,同样也不可以放入可变对象。
创建:
使用parame = {value01,value02,...}
或者set(value)
创建集合,使用set()
创建空集合。支持集合的&
、|
、-
、^
操作。
方法:
- 通过
add(key)
方法或update(key)
可以添加元素到set中,其中update()
参数可以是列表,字典等不可哈希的元素:
输出:this_set = set(("Google", "Runoob", "Taobao")) this_set.update({1,3}) this_set.update([1,4],[5,6]) print(this_set)
{1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}
- 删除集合:
(1).通过remove(key)
方法可以删除元素,如果元素不存在,则会发生错误;
(2).通过discard(key)
移除集合中的元素,如果元素不存在,不会发生错误;
(3).pop()
随机删除集合中的一个元素,交互模式下pop()
是删除排序后集合的第一个元素;
(4).clear()
清空集合。
判断语句
多条件判断:
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
如下,大于等于18岁输出adult,[6,18)岁输出teenager,小于6岁输出kid:
if age >= 18:
print('adult')
elif age >= 6:
print('teenager')
else:
print('kid')
三目表达式:
为真时的结果 if 判定条件 else 为假时的结果:'True' if condition else 'False'
。
循环语句
-
for循环:
for x in ...
循环就是把每个元素代入变量x
,然后执行缩进块的循环语句。range()
函数,可以生成一个整数序列,再通过list()
函数可以转换为list
,如:list(range(5))
输出[0, 1, 2, 3, 4]
。可以结合
range()
和len()
函数以遍历一个序列的索引:for i in range(len(list)): print(i, list[i])
-
while循环:
计算100以内所有奇数之和:sum = 0 n = 99 while n > 0: sum = sum + n n = n - 2 print(sum)
在
while … else
在条件语句为false
时执行else
的语句块,但循环被break终止时不执行,如下判断是否为质数的代码:for n in range(2, 10): for x in range(2, n): if n % x == 0: print(n, '等于', x, '*', n//x) break else: # 循环中没有找到元素 print(n, ' 是质数')
-
break
语句可以提前退出循环;continue
语句,跳过当前的这次循环,直接开始下一次循环。