简单赋值用于为一个变量赋值。
序列赋值可以一次性为多个变量赋值。
多目标赋值指用连续的多个等号将同一个数据赋值给多个变量。
# 简单赋值 num = 100 # 100 # 序列赋值 x, y = 1, 2 # 1, 2 (x2, y2) = 10, 20 # 10, 20 [x3, y3] = 'ab' # a, b ((x4, y4), z4) = 'ab', 'cd' # a, b, cd x5, *y5 = 'abcd' # a, ['b', 'c', 'd'] *x6, y6 = [1, 2, 3, 'abc'] # [1, 2, 3], abc # 多目标赋值 a = b = c = 10 # 将10 分别赋值给变量 a、b、c # 增强赋值 i = 10 i += 10 # 20
通常,程序结构分为3种:顺序结构、分支结构和循环结构。
程序中的语句按照先后顺序依次执行各条语句,程序默认为顺序结构
Python
使用if
语句实现程序的分支结构;Python还有一种特殊的三元表达式语法:表达式1
if 条件表达式
else 表达式2
Python
使用for
语句和while
语句实现循环结构;循环中还可以使用break
、continue
和pass
来完成循环控制
例题:
编程实现任何一个列表中的每个数字进行奇偶数分类,用for循环和while循环分别定义一个函数实现。
并随机生成一串正整数(不允许定随机种子),检验函数正确。
比如:生成的是vec = [36, 17 ,22, 93, 88, 63],得到even =[36,22,88], odd=[17,93,63]。
import random import numpy as np # 用for循环进行奇偶数分类 def f1(array): list1 = [] list2 = [] for i in range(len(array)): if(array[i] % 2 == 0): list2.append(array[i]) else: list1.append(array[i]) return list1, list2 #用while循环进行奇偶数分类 def f2(array): list1 = [] list2 = [] t = len(array) while(t): t = t - 1 if(array[t] % 2 == 0): list2.append(array[t]) else: list1.append(array[t]) return list1, list2 n = input("请输入列表长度n=") n = int(n) random_int_list = [] for i in range(n): random_int_list.append(random.randint(0, 1000)) array = np.array(random_int_list) list1, list2 = f1(array) print("生成的序列:", random_int_list) print("奇数序列:", list1) print("偶数序列:", list2)
在Python
中,数字和字符串属于简单数据类型。集合、列表、元组、字典和范围等均属于组合数据类型。组合数据类型的对象是一个数组容器,可以包含多个有序或无序的数据项。
集合(set
)是Python 2.4
引入的一种类型,集合常量用大括号
表示,例如,{1,2,3}
。集合中的元素具有唯一、无序和不可改变等特点,集合支持数学理论中的各种集合运算。
列表和元组都属于序列,序列支持索引、分片和合并等操作。字符串属于特殊的不可变序列。
元组可以看作是不可变的列表,它的使用与字符串类似。元组常量用圆括号表示,例如:(1,2)
、('a','b','c')
,也可以使用tuple()
方法来创建元组对象。
字典是一种无序的映射集合,包含一系列的键:值对。字典常量用大括号
表示,例如,{'name':'John','age':25,'sex':'male'}
,也可以使用dict()
函数来创建。
# 重复值的集合声明 set1 = {1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4} print(len(set1)) # 求长度:计算集合中元素的个数 4 print('a' in set1) # 判断包含:判断集合是否包括数据 True # Python3.0引入的集合解析构造方法 set2 = {item for item in [1, 2, 3, 4]} # 集合对象支持求长度、判断包含、求差集、并集、交集、对称差和比较等运算 print(set1 - set2) # 求差集:用属于set1但不属于set2的元素创建新集合 {2, 'bc'} print(set1 | set2) # 求并集:用set1、set2两个集合中的所有元素创建新集合 {1, 2, 5, 'a', 'bc'} print(set1 & set2) # 求交集:用同时属于set1和set2的元素创建新集合 {1, 'a'}
# 列表切片操作 list1 = list(range(10)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(list1[2:5]) # [2, 3, 4] print(list1[2:]) # [2, 3, 4, 5, 6, 7, 8, 9] print(list1[:5]) # [0, 1, 2, 3, 4] print(list1[3:10:2]) # [3, 5, 7, 9] print(list1[10:3:-2]) # [9, 7, 5] # 列表常用方法 list2 = [1, 3, 3, 7, 5] list2.append(5) # 追加 list2.remove(7) # 移除指定元素 list2.pop(0) # 按索引位置删除 list2.sort() # 升序排序 list2.reverse() # 反转
# 创建元组 print((2,)) # 包含一个对象的元组,不能缺少逗号 (2,) print(tuple('abcde')) # 参数为可迭代对象 ('a', 'b', 'c', 'd', 'e') print(tuple(item * 2 for item in range(5))) # 使用解析结构创建元组 (0, 2, 4, 6, 8) # 元组常用方法 print(len((1, 2, 3, 4, 5))) # 求长度 print((1, 2) * 3) # 重复 print(t3.count(1)) # 统计指定值出现的次数,如果不包含指定值时,返回0 print(t3.index(2)) # 查找指定范围内元素所在的索引 # 索引和分片 t2 = tuple(range(10)) # (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) print(t2[1]) # 1 print(t2[-1]) # 9 print(t2[2:5]) # (2, 3, 4) print(t2[1:7:2]) # (1, 3, 5)
# 创建字典 dict1 = {'name': 'John', 'age': 25, 'sex': 'male'} # 字典常量 dict2 = {'book': {'Python编程': 100, 'C++入门': 99}} # 嵌套字典 dict3 = dict(name='Tom', age=25) # 使用赋值格式的“键:值”对创建字典 {'name': 'Tom', 'age': 25} # 字典常用方法 dict1['name'] = 'tom' # 通过索引修改映射值 dict1.update(name='jim') # update()方法用于为字典添加键值对,若字典已存在同名的键,则该键的映射值被覆盖 print(dict1['name']) # 根据key获取value print(dict1.get('name', 'default')) # 返回键 key映射的值, 如果键key不存在,返回默认值 print(dict1.pop('name', 'default')) # 从字典中删除键值对,并返回被删除的映射值。若键不存在,则返回default print(dict1.items()) # 返回键值对视图,视图对象支持迭代操作 print(dict1.keys()) # 返回字典中所有键的视图 print(dict1.values()) # 返回字典中全部值的视图