1. dict字典
1.1 字典的定义
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型,在其他语言中也成为了map,具有极快的查找速度。列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成,即dict的基本格式为:
dict = {key1: value1, key2: value2, …}
注意:
- 每个key是唯一索引,不在一个dict里重复出现
- dict是没有顺序的,不能按照位置来查找
1.2 字典的创建
>>> d = { 'Bob':90, 'Tom':95, 'Alice':89}
1.3 字典的方法
- 查找/替换value
>>> d['Bob'] #按照key值查找对应的value
90
>>> d['Bob'] = 80 #直接给key赋值,进行值的替换
>>> d['Bob']
80
>>> d['Lee'] #key不存在,dict会报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Lee'
避免key不存在的错误,有两种办法,一是通过in判断key是否存在:
>>> 'Bob' in d
True
>>> 'Lee' in d
False
二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value
>>> d.get('Lee') #key不存在,返回none
>>> d.get('Bob')
80
- 添加key-value
>>> d['David']=99 #Python不关心key-value的的添加顺序,值关心key和value之间的关联关系
>>> print(d)
{'Bob': 80, 'David': 99, 'Alice': 89, 'Tom': 95}
- 删除key-value
>>> d.pop('Tom')
95
>>> print(d)
{'Bob': 80, 'David': 99, 'Alice': 89}
和list比较,dict有以下几个特点:
1.查找和插入的速度极快,不会随着key的增加而变慢;
2.需要占用大量的内存,内存浪费多。
而list相反:
1.查找和插入的时间随着元素的增加而增加;
2.占用空间小,浪费内存很少。
Python内置的字典方法有以下
序号 | 函数及描述 |
---|---|
1 | dict.clear(),删除字典内所有元素 |
2 | dict.copy(),返回一个字典的浅复制 |
3 | dict.fromkeys(seq[, val]), 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值 |
4 | dict.get(key, default=None),返回指定键的值,如果值不在字典中返回default值 |
5 | dict.has_key(key),如果键在字典dict里返回true,否则返回false |
6 | dict.items(),以列表返回可遍历的(键, 值) 元组数组 |
7 | dict.keys(),以列表返回一个字典所有的键 |
8 | dict.setdefault(key, default=None),和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
9 | dict.update(dict2),把字典dict2的键/值对更新到dict里 |
10 | dict.values(),以列表返回字典中的所有值 |
11 | pop(key[,default]),删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。否则,返回default值。 |
12 | popitem(),随机返回并删除字典中的一对键和值。 |
2. 集合
2.1 集合的特性
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
- 重复元素在set中自动被过滤。
- set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作
- set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。
2.2 集合的创建
要创建一个set,需要提供一个list作为输入集合:
>>> s = set([1,2,3])
>>> s
{1, 2, 3}
>>> s = set([1,1,2,2,3,3]) #重复元素在set中被自动过滤
>>> s
{1, 2, 3}
>>> s1 = set([1,2,3])
>>> s2 =set([2,3,4])
>>> s1 & s2 #集合的交
{2, 3}
>>> s1 | s2 #集合的并
{1, 2, 3, 4}
2.3 集合的方法
- 添加元素。
add(key)方法可以添加元素到set中,可以重复添加,但不会有效果。
>>> s.add(5)
>>> s
{1, 2, 3, 5}
>>> s.add(5)
>>> s
{1, 2, 3, 5}
- 删除元素
>>> s.remove(5)
>>> s
{1, 2, 3}
集合的其他方法
序号 | 方法 |
---|---|
1 | update(),更新多个值 |
2 | discard(),一处集合中元素,不在集合中不会报错 |
3 | pop(),随机移除一个元素 |
4 | clear(),清空集合 |
5 | 计算集合中元素个数 |
6 | copy(),复制集合 |
3.判断语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
Python 编程中 if 语句用于控制程序的执行,基本形式为:
if 判断条件:
执行语句……
else:
执行语句……
其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。
age = 19
if age >= 18:
print("You are an adult.")
print("Are you already?")
else:
print("You are not an adult")
输出结果
You are an adult.
Are you already?
else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句。
if语句完整形式为:
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
实例:
age = 16
if age >= 18:
print("You are an adult.")
print("Are you already?")
elif age >= 13:
print("You are not an adult")
elif age >= 3:
print("You are a child")
else:
print("You are a baby")
输出结果:
You are not an adult
由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。
num = 9
if num >= 0 and num <= 10: # 判断值是否在0~10之间
print('hello')
#输出结果
hello
num = 10
if num < 0 or num > 10: # 判断值是否在小于0或大于10
print('hello')
else:
print('undefine')
#输出结果
undefine
num = 8
if (num >= 0 and num <= 5) or (num >= 10 and num <= 15): # 判断值是否在0~5或者10~15之间
print('hello')
else:
print('undefine')
#输出结果
undefine
4. 三目表达式
python中没有其他语言中的三元表达式,不过有类似的实现方法。
- if语句中三目运算符语法格式
Python可以通过if’语句来实现三目运算符的功能,因此可以把这种if语句当做三目运算符,具体语法格式如下:
为真时的结果 if 判断条件 else 为假时的结果(注意,没有冒号)
>>> x=3
>>> x = x+1 if x%2==1 else x
>>> print(x)
4
- 在三目运算符中放置多条语句方式
-使用英文分号隔开,每条放置的语句都会执行,程序返回多条语句的返回值组成的元组。
>>> b = 1 + 1; "3 > 2";print('AAA') if 1 > 2 else print("BBB");2 + 2
'3 > 2'
BBB
4
-使用英文逗号隔开,每条语句都会执行,但程序只会返回第一条语句的返回值。
>>> b = 3 + 1, "3 > 2",print('AAA') if 1 > 2 else print("BBB"),2 + 2
BBB
- 嵌套三目运算符
>>> x = 3
>>> y = 5
>>> print("x=y") if x==y else print("x>y") if x>y else print("x<y")
x<y
5. 循环语句
Python提供了for循环和while循环(Python中没有do……while循环)
循环类型 | 描述 |
---|---|
while循环 | 在给定的判断条件为 true 时执行循环体,否则退出循环体。 |
for循环 | 重复执行语句 |
嵌套循环 | 可以在while循环体中嵌套for循环 |
此外,Python还提供了循环控制语句,更改语句执行的顺序
控制语句 | 描述 |
---|---|
break语句 | 在语句块执行过程中终止循环,并且跳出整个循环 |
continue语句 | 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。 |
pass语句 | pass是空语句,是为了保持程序结构的完整性。 |
- while循环
while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:
while 判断条件:
执行语句……
count = 0
while(count<9):
print("The count is:",count)
count = count + 1
print("done")
#输出
The count is: 0
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 5
The count is: 6
The count is: 7
The count is: 8
done
while 语句时还有另外两个重要的命令 continue,break 来跳过循环,continue 用于跳过该次循环,break 则是用于退出循环,此外"判断条件"还可以是个常值,表示循环必定成立,具体用法如下:
#continue 和 break 用法
>>> i = 1
>>> while i < 10:
... i +=1
... if i%2 > 0:
... continue # 非双数时跳过输出
... print(i)
#输出
2
4
6
8
10
>>> i = 1
>>> while 1: # 循环条件为1必定成立
... print(i) # 输出1~10
... i += 1
... if i > 10:
... break # 当i大于10时跳出循环
#输出
1
2
3
4
5
6
7
8
9
10
无限循环
如果条件判断语句永远为 true,循环将会无限的执行下去,如下实例:
>>> while True:
... num = input("please enter a number:")
... print("you enter:",num)
...
please enter a number:2
you enter: 2
please enter a number:2
you enter: 2
please enter a number:4
you enter: 4
可以使用 CTRL+C 来中断无限循环
循环使用 else 语句
在 python 中,while … else 在循环条件为 false 时执行 else 语句块:
>>> count = 0
>>> while count < 5:
... print(count,"is less than 5")
... count = count + 1
... else:
... print(count,"is not less than 5")
#输出
0 is less than 5
1 is less than 5
2 is less than 5
3 is less than 5
4 is less than 5
5 is not less than 5
- for循环
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for循环的语法格式如下:
for iterating_var in sequence:
statements(s)
>>> for letter in "python":
... print(letter)
#输出
p
y
t
h
o
n
>>> names = ["bob","andy","alice"]
>>> for name in names:
... print(name)
#输出
bob
andy
alice
另外一种执行循环的遍历方式是通过索引,如下实例:
>>> colors = ["green","blue","red"]
>>> for index in range(len(colors)):
... print("color is:",colors[index])
#
color is: green
color is: blue
color is: red
在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。
for num in range(10,20): # 迭代 10 到 20 之间的数字
for i in range(2,num): # 根据因子迭代
if num%i == 0: # 确定第一个因子
j=num/i # 计算第二个因子
print('%d 等于 %d * %d' % (num,i,j)
break # 跳出当前循环
else: # 循环的 else 部分
print(num, '是一个质数')
#输出
10 等于 2 * 5
11 是一个质数
12 等于 2 * 6
13 是一个质数
14 等于 2 * 7
15 等于 3 * 5
16 等于 2 * 8
17 是一个质数
18 等于 2 * 9
19 是一个质数
- 嵌套循环
Python 语言允许在一个循环体里面嵌入另一个循环。
Python for 循环嵌套语法:
for iterating_var in sequence:
for iterating_var in sequence:
statements(s)
statements(s)
Python while 循环嵌套语法:
while expression:
while expression:
statement(s)
statement(s)