变量与集合
1、输入输出
1 # Python有一个打印语句
2 print ("I'm Python. Nice to meet you!") # => I'm Python. Nice to meet you!
3
4 # 获取控制台输入的简单方法
5 input_string_var = input("Enter some data: ") # 返回字符串类型的数据,从键盘输入的数据会以字符串的形式保存到 input_string_var
6 input_var = input("Enter some data: ") # 返回字符串类型的数据,从键盘输入的数据会以字符串的形式保存到 input_var
7 # 假设 input_var我们输入的是int类型的数据1234,那么我们需要进行类型转换
8 input_var # => "1234"
9 int(input_var) # => 1234
10
11 # 不需要先声明变量再使用
12 some_var = 5 # 通常使用小写字母与下划线命名变量
13 some_var # => 5
14
15 # 访问一个未定义的变量会抛出一个异常
16 # 在“控制流”里会介绍更多异常处理
17 some_other_var # 这里会抛出一个NameError
18
19 # if 可以用来写成类似C语言的 '?:' 条件表达式
20 "yahoo!" if 3 > 2 else 2 # => "yahoo!"
2、列表 List
1 # List用来存储列表
2 li = []
3 # 可以有初始数据
4 other_li = [4, 5, 6]
5
6 # 添加元素到列表的尾
7 li.append(1) # [1]
8 li.append(2) # [1,2]
9 li.append(3) # [1,2,3]
10 li.append(4) # [1,2,3,4]
11 # 使用pop方法移除列表末尾的元素
12 li.pop() # => 3 列表现在为 [1, 2, 4]
13 # 把3再放回去
14 li.append(3) # li 现在为 [1, 2, 4, 3]
15
16 # 像数组一样访问一个list
17 li[0] # => 1
18 # 通过下标重新定义一个元素的值
19 li[0] = 42
20 li[0] # => 42
21 li[0] = 1 # 注意:设置回原始值
22 # 查看最后一个元素
23 li[-1] # => 3
24
25 # 查找超过数据长度的值会抛出异常: IndexError
26 li[4] # 抛出 IndexError
27
28 # 可以使用切片句法访问列表
29 # 这里类型数学上的开/闭区间 左闭右开 注意下标是从0开始
30 # 下标1-下标3[1,3)
31 li[1:3] # => [2, 3]
32 # 下标2到末尾
33 li[2:] # => [3, 4]
34 # 开头一直到下标3
35 li[:3] # => [1, 2, 3]
36 # 开始到末尾步长为2
37 li[::2] # =>[1, 3]
38 # 开始到末尾步长为-1
39 li[::-1] # => [4, 3, 2, 1]
40 # 使用高级切片句法
41 # li[start:end:step]
42
43 # 使用切片进行深层拷贝
44 li2 = li[:] # => li2 = [1, 2, 4, 3] 但 (li2 is li) 返回 false
45
46
47 # 使用“del”直接从列表中删除元素
48 del li[2] #liisnow[1,2,3]
49
50 # 可以直接添加一个列表
51 li + other_li #=>[1,2,3,4,5,6]
52 # 注: 变量li 和 other_li 值并没有变化
53
54 # 使用extend()方法,把列表串起来
55 li.extend(other_li) # Now li is [1, 2, 3, 4, 5, 6]
56
57 # 删除第一个值与参数相同的元素
58 li.remove(2) # li is now [1, 3, 4, 5, 6]
59 li.remove(2) # 抛出异常 ValueError 列表中没有2
60
61 # 在指定下标插入元素
62 li.insert(1, 2) # li is now [1, 2, 3, 4, 5, 6] again
63
64 # 获得第一个匹配的元素的下标
65 li.index(2) # => 1
66 li.index(7) # 抛出异常 ValueError 列表中没有7
67
68 # 使用“in”来检查列表中是否包含元素
69 1 in li #=>True
70 # 使用“len()”来检查列表的长度
71 len(li) # => 6
3、元组 Tuple
1 # 元组(Tuple)与列表类似但不可修改
2 tup = (1, 2, 3)
3 tup[0] # => 1
4 tup[0] = 3 # 抛出异常 TypeError
5
6 # 注意:如果一个元组里只有一个元素,则需要在元素之后加一个逗号;如果元组里没有元素,反而不用加逗号
7 type((1)) # => <class 'int'>
8 type((1,)) # => <class 'tuple'>
9 type(()) # => <class 'tuple'>
10
11 # 以下对列表的操作,也可以用在元组上
12 len(tup) # => 3
13 tup + (4,5,6) #=>(1,2,3,4,5,6)
14 tup[:2] #=>(1,2)
15 2 in tup #=>True
16
17 # 可以把元组的值分解到多个变量上
18 a,b,c= (1, 2, 3) #a is now 1,b is now 2 and c is now 3
19 d,e,f= 4,5,6 # 也可以不带括号
20 # 如果不带括号,元组会默认带上
21 g = 4, 5, 6 #=>(4,5,6)
22 # 非常容易实现交换两个变量的值
23 e, d = d, e # d is now 5 and e is now 4
4、字典 Dictionaries
1 # 字典用来存储(键-值)映射关系 有点类似于其他语言里面的map
2 empty_dict = {}
3 # 这里有个带初始值的字典
4 filled_dict = {"one": 1, "two": 2, "three": 3}
5
6 # 注意:字典 key 必须是不可以修改类型,以确保键值可以被哈希后进行快速检索
7 # 不可修改的类型包括:int, float, string, tuple
8 invalid_dict = {[1,2,3]: "123"} # => Raises a TypeError: unhashable type: 'list'
9 valid_dict = {(1,2,3):[1,2,3]} # 值可以是任意类型
10
11 # 使用[]查找一个元素
12 filled_dict["one"] # => 1
13 # 使用"keys()"获得所有的“键”
14 filled_dict.keys() # => ["three", "two", "one"]
15 # 注:字典的key是无序的,结果可以不匹配
16 # 使用"values()"获得所有的“值”
17 filled_dict.values() # => [3, 2, 1]
18 # 注:同样,这是无序的
19
20 # 查询字条中是否存在某个”键“用 "in"
21 "one" in filled_dict # => True
22 1 in filled_dict # => False
23
24 # 查找一个不存在的key会抛出异常 KeyError
25 filled_dict["four"] # KeyError
26
27 # 使用 "get()" 会避免抛出异常 KeyError
28 filled_dict.get("one") # => 1
29 filled_dict.get("four") # => None
30
31 # get方法支持默认参数,当key不存在时返回该默认参数
32 filled_dict.get("one", 4) #=>1
33 filled_dict.get("four", 4) # => 4
34
35 # 注 filled_dict.get("four") 仍然返回 None
36 # (get不会把值插入字典中)
37 # 向字典中插入值的方式与list相同
38 filled_dict["four"] = 4 # now, filled_dict["four"] => 4
39
40 # "setdefault()" 只有首次插入时才会生效
41 filled_dict.setdefault("five", 5) # filled_dict["five"] is set to 5
42 filled_dict.setdefault("five", 6) # filled_dict["five"] is still 5
43
44 # 使用 del 从字典中删除一个键
45 del filled_dict["one"] # Removes the key "one" from filled dict
46
47 # 从 Python 3.5 开始,可以使用**操作
48 {'a': 1, **{'b': 2}} # => {'a': 1, 'b': 2}
49 {'a': 1, **{'a': 2}} # => {'a': 2}
5、集合 Set
1 # Set与list类似,但不存储重复的元素
2 empty_set = set()
3 some_set = set([1, 2, 2, 3, 4]) # some_set is now set([1, 2, 3, 4])
4
5 # 与字典类型一样,Set 里的元素也必须是不可修改的
6 invalid_set = {[1], 1} # => Raises a TypeError: unhashable type: 'list'
7 valid_set = {(1,), 1}
8
9 # Set也是无序的,尽管有时看上去像有序的
10 another_set = set([4, 3, 2, 2, 1]) # another_set is now set([1, 2, 3, 4])
11
12 # 从Python 2.7开始, {}可以用来声明一个Set
13 filled_set={1,2,2,3,4} #=>{1,2,3,4}
14 # Can set new variables to a set
15 filled_set = some_set
16 # 向Set中添加元素
17 filled_set.add(5) # filled_set is now {1, 2, 3, 4, 5}
18 # 用 & 求 Set的交集
19 other_set = {3, 4, 5, 6}
20 filled_set & other_set # =>{3,4,5}
21 # 用 | 求 Set的合集
22 filled_set | other_set # =>{1,2,3,4,5,6}
23 # 用 - 前面的元素减去后面的元素
24 {1,2,3,4} - {2,3,5} # => {1,4}
25 # 用 ^ 求Set的差集
26 {1,2,3,4}^{2,3,5} #=>{1,4,5}
27 # 检查右边是否是左边的子集
28 {1, 2} >= {1, 2, 3} # => False
29 # 检查左边是否是右边的子集
30 {1, 2} <= {1, 2, 3} # => True
31 # 检查元素是否在集合中
32 2 in filled_set # => True
33 10 in filled_set # => False
上一篇:三小时快速入门Python第一篇--原始数据类型与操作
下一篇:三小时快速入门Python第三篇--控制流分支与循环