三小时快速入门Python第二篇--变量与集合

变量与集合

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第三篇--控制流分支与循环

posted @ 2020-07-21 17:21  小尾学长  阅读(1082)  评论(0编辑  收藏  举报