一.AI&Python基础语法
1️⃣AI&Python数据类型(上)
3.1列表的定义
Python中的列表是编程语言中非常强大和灵活的数据结构,它允许你创建一个有序的元素集合,并且可以包含不同类型的对象。列表是可变的(mutable),意味着创建后你可以改变它们的内容。
【实例17】列表定义、访问与切片的基础实例。
# 定义一个列表,包含多种数据类型的元素mixed_list = [9, "寸", "+", 1, "寸", "得寸进尺"]print("1.完整的列表:", mixed_list)print("2.第1个元素:", mixed_list[0])print("3.最后1个元素:", mixed_list[-1])print("4.列表的切片(第1个到第3个元素):", mixed_list[0:3])print("5.列表的切片(第2个元素到最后):", mixed_list[1:])print("6.列表的切片(开始到倒数第2个元素):", mixed_list[:-1])print("7.列表的切片(第3个元素开始,每隔1个元素):", mixed_list[2::2])print("8.列表的切片(第1个元素开始,每隔2个元素):", mixed_list[0::3])
输出结果:
3.2列表的常用操作
在Python编程语言中,列表是一种非常灵活且常用的数据结构,它允许我们存储一系列有序的元素,并提供了多种内置方法来对这些元素进行操作。从组合和重复列表到查询列表属性如长度、最大值或最小值,再到修改列表内容,Python的列表为我们提供了一套丰富而直观的操作工具。我们可以轻松地合并多个列表、计算所有元素的总和、在特定位置插入新数据、以及对列表中的元素进行排序或负转等。
接下来,我们将通过一系列示例来探讨这些常用操作,展示如何有效地利用Python列表的强大功能。
【实例18】列表操作的基础实例。
# 初始化两个列表实例list1 = [1, 2, 3 ,4 ,5]list2 = [4, 5, 6 ,5 ,4]print("1.列表1后增加列表2",list1 + list2) # 列表组合print("2.列表1重复3次:",list1 * 3) # 列表的重复print("3.列表1的长度:",len(list1)) # 列表的长度print("4.列表1中元素最小值:",min(list1)) # 返回列表中元素最小值print("5.列表1中元素最大值:",max(list1)) # 返回列表中元素最大值print("6.列表1中元素的总和:",sum(list1)) # 返回列表中元素的总和list1.insert(1, 9) # 在指定位置插入数据print("7.在列表1指定索引1插入数据9:",list1)list1.append(7) # 在末尾追加数据print("8.在列表1末尾追加数据7:",list1)list1.extend(list2) # 将列表2的数据追加到列表print("9.将列表2的数据追加到列表1:",list1)list1[2] = 100 # 修改指定索引数据print("10.修改指定索引2数据为100:",list1)del list1[2] # 删除指定索引的数据print("11.删除列表1指定索引2的数据:",list1)list1.remove(4) # 删除第一个出现的指定数据print("12.删除列表1第一个出现的指定数据4:",list1)list1.pop() # 删除末尾数据print("13.删除列表1末尾数据:",list1)list1.pop(1) # 删除指定索引数据print("14.删除列表1中索引为1的元素:",list1)list1.clear() # 清空列表print("15.清空列表1:",list1)count_of_5_in_list2 = list2.count(5) # 数据在列表中出现的次数print("16.数据5在列表2中出现的次数:",count_of_5_in_list2)list2.sort() # 升序排序print("17.列表2的升序排列:", list2)list2.sort(reverse=True) # 降序排列print("18.列表2的降序排列:", list2)list2.reverse() # 逆序、负转print("19.列表2的逆序排列:", list2)
输出结果:
4.1元组的定义
元组(Tuple)可以被理解为一种容器,它用来组织多个固定的数据项。与列表相似,元组也能够容纳一系列有序排列的元素,这些元素可以通过它们的位置编号——即索引进行访问,索引同样是从0开始计数。然而,元组和列表之间有一个关键的区别:元组是不可变的,这意味着一旦一个元组被创建,它所包含的元素就不能再被添加、移除或更改。
使用圆括号()来定义元组,并且每个元素之间用逗号,隔开。由于其不可变性,元组通常用于保护数据不被意外修改,或者在程序中表示不应该改变的数据集合。此外,因为元组的内容固定,所以在某些情况下,如作为字典的键时,它们比列表更合适,因为只有不可变类型可以作为字典的键。
【实例19】元组定义的基础实例。
#创建元组info = ("天道", 22, 70.5) # 包含姓名、年龄和体重empty = () # 空元组single = ("hello",) # 单个元素的元组(记得加逗号)letters = tuple("abc") #从字符串创建元组print("1.元组中的元素:", info)print("2.空元组:", empty)print("3.单个元素的元组:", single)print("4.从字符串创建元组:", letters)
输出结果:
4.2元组的常用操作
在Python编程语言中,尽管元组是不可变的,但我们仍然可以对它们执行多种操作,例如获取长度、复制、检查成员资格、访问元素、统计元素出现次数等。此外,我们还可以通过重新赋值或组合现有元组来“间接”改变元组的内容,并且可以在不再需要时删除它们。接下来,我们将通过一些实例来展示一下元组的常用操作。
【实例20】元组操作的基础实例。
# 定义一个包含水果名称的元组fruits = ("apple", "banana", "cherry", "date")print(f"1.元组水果(apple,banana,cherry,date)中水果的数量为: {len(fruits)}")# 复制元组两次doubled_fruits = fruits * 2print("2.复制元组水果2次后的元组:", doubled_fruits)# 检查特定值的存在mixed_tuple = (1, "two", 3.0, "four")print("3.元组混合(1,two,3.0,four)中数字1存在吗?", 1 in mixed_tuple) # 存在,输出 Trueprint("4.字符串'five'存在于元组混合中吗?", "five" in mixed_tuple) # 不存在,输出 False# 访问元素和查找索引first_fruit = fruits[0]print(f"5.元组水果中第一个水果是: {first_fruit}")cherry_index = fruits.index("cherry") # 查找元素'cherry'的位置print(f"6.'cherry'位于元组水果中索引位置: {cherry_index}")# 统计'apple'在元组中出现的次数apple_count = fruits.count("apple")print(f"7.'apple'出现在元组水果中{apple_count}次")# 重新赋值给fruits变量fruits = ("elderberry", "fig", "grape")print("8.元组水果重新赋值后的元组fruits:", fruits)# 定义第二个元组more_fruits = ("honeydew", "ice cream bean")all_fruits = fruits + more_fruits # 将两个元组合并print("9.合并新元组后的元组:", all_fruits)# 删除fruits元组del fruits# 尝试打印已被删除的元组将引发异常try: print(fruits)except NameError as e: print(f"10.尝试访问已删除的元组导致错误: {e}")# 定义一个整数列表number_list = [1, 2, 3, 4, 5]number_tuple = tuple(number_list) # 将列表转换为元组# 打印转换后的元组及其类型print("11.列表[1, 2, 3, 4, 5]转换为元组:", number_tuple)print("12.转换后的类型:", type(number_tuple))converted_back_list = list(number_tuple) # 再次转换回列表print("13.再次转换回列表后的类型:", type(converted_back_list))
输出结果:
5.1集合的定义
集合(Set)在Python中表示一个无序且不重复元素的集合。它使用大括号{}来包围所有元素,各元素间以逗号,分隔。以下是关于Python集合的一些关键特性:
1)数据类型限制:集合中的元素只能是不可变的数据类型,例如整数、浮点数、字符串和元组。不能将列表、字典或另一个集合等可变的数据类型作为元素存储在集合中,因为这些类型的对象是可以修改的,这与集合内部元素需要保持哈希不变性的要求相冲突。尝试添加可变数据类型到集合会导致Python解释器抛出TypeError异常。
2)唯一性:集合确保每个元素都是独一无二的。这意味着如果你试图向集合中添加一个已经存在的元素,该操作将不会改变集合,重复的元素会被自动忽略。
3)无序性:集合内的元素没有固定的顺序。因此,当你遍历或者输出集合的时候,元素出现的顺序可能与它们被添加进去时的顺序不同。每次你访问集合内容时,元素的排列可能会有所变化。
【实例21】集合定义的基础实例。
#创建一个包含不同数据类型的集合,包括整数、浮点数、字符串和元组my_set = {42, 3.14, "Python", ("AI", "Machine Learning")}print("混合数据类型集合:",my_set)# 从字符串创建集合,每个字符作为集合中的单独元素letters = set("programming")print("字符串创建集合:",letters)
输出结果:
集合是Python中一种非常有用的数据结构,它允许我们存储不重复的元素,并且提供了高效的数学集合操作,如并集、交集、差集等。集合非常适合用于成员资格测试、去重以及需要执行集合运算的场景。下面将介绍Python集合的一些常用操作。
【实例22】集合常用操作的基础实例。
# 访问集合fruits = {"苹果", "香蕉", "橙子", "葡萄"}# 使用for循环遍历并打印集合中的每个元素for fruit in fruits: print("访问遍历水果集合:",fruit)# 添加元素vegetables = {"胡萝卜", "黄瓜", "番茄"}vegetables.add("土豆") # 向集合中添加新元素print("1.集合蔬菜{胡萝卜,黄瓜,番茄}添加土豆元素后的集合:",vegetables)# 删除元素animals = {"猫", "狗", "鸟"}animals.remove("猫") # 移除存在的元素print("2.删除动物集合{猫,狗,鸟}中猫元素后的集合:",animals)animals.discard("鱼") # 尝试删除不存在的元素(使用discard不会报错)animals.clear() # 清空集合print("3.清空动物集合所有元素后的集合:",animals)colors = {"红", "蓝", "绿"} # 随机删除一个元素popped_color = colors.pop()print(f"4.集合颜色{红,蓝,绿}被随机移除的颜色是: {popped_color}")print("打印剩余颜色的集合:",colors)# 交集、并集、差集和对称差集group1 = {"小明", "小红", "小刚"}group2 = {"小红", "小丽", "小强"}# 计算交集print("5.集合组1{小明,小红,小刚}和集合组2{小红,小丽,小强}的交集:",group1 & group2)# 计算并集print("6.集合组1和集合组2的并集:",group1 | group2)# 计算差集print(f"7.集合组1和集合组2的差集:",group1 - group2)# 计算对称差集print(f"8.集合组1和集合组2的对称差集:",group1 ^ group2)# 集合拷贝original_set = {"音乐", "电影", "书籍"}copied_set = original_set.copy() # 复制这个集合original_set.add("绘画") # 修改原始集合以显示副本不受影响print(f"9.拷贝原始集合: {copied_set}")print(f"10.原始集合增加绘图元素后的集合: {original_set}")
输出结果:
6.1字典的定义
字典(dictionary)是Python中一种非常灵活的数据结构,用于存储键值对(key-value pairs),其中每个键都是唯一的,并与一个值相关联。不同于列表,字典中的元素不是按照位置索引的,而是通过键来访问;因此,字典被认为是无序的对象集合。字典使用花括号{}来定义,每个元素由键和值组成,两者之间用冒号:分隔,而各元素之间则用逗号分隔。此外,Python也允许通过内置的dict()构造函数从其他数据类型转换成字典。
【实例23】创建字典的基础实例。
#创建字典xiaming = {"name": "小明", "age": 18, "height": 185, "gender": True}print("使用{}定义字典:",xiaming)dict_from_lists = dict([['two', 2], ['one', 1], ['three', 3]]) #列表转换为字典print("使用列表转换为字典:",dict_from_lists)
【分析解答】在这里,"name"、"age"、"height"和"gender"是字典的键(key),而"xiaoming"、18、185和True则是相应的值(value)。
输出结果:
6.2字典的常用操作
在Python编程语言中,字典(dict)是一种非常有用的数据结构,它允许我们存储键值对,并通过键快速访问对应的值。Python提供了多种方式来操作字典,包括获取、添加、修改和删除键值对等。接下来,我们将通过一系列的示例来展示如何使用这些功能。
【实例24】字典常用操作的基础实例。
# 定义一个包含个人资料的字典person_info = { "姓名": "小李", "年龄": 25, "城市": "广州", "是否在职": True }print("个人资料字典:",person_info)# 使用get()方法访问字典中的值,当键不存在时不会报错而是返回None或指定的默认值print("1.访问存在的姓名:",person_info.get("姓名"))print("2.访问不存在的地址:",person_info.get("地址"))# 增加字典内容,如果key不存在就是新增person_info["邮箱"] = "xiaoli@example.com"print("3.增加邮箱后:",person_info)# 删除字典中的项person_info.pop("城市", None) # 如果键 '城市' 存在,则移除并返回其值;否则返回Noneprint("4.删除字典中的城市项后:",person_info)# 统计键值对数量print("5.统计字典的长度:",len(person_info)) # 输出当前字典中键值对的数量# 合并字典person_info2 = {"兴趣爱好": ["读书", "游泳"], "城市": "深圳"}print("6.待合并的字典:",person_info2)person_info.update(person_info2) # 注意,这里键 '城市' 将被新值覆盖print("合并字典后:",person_info)# 复制字典person_info_copy = person_info.copy()# 清空字典person_info.clear()print("6.输出清空后的字典:",person_info) # 输出一个空字典 {}# 判断字典中是否存在指定键值对print("7.检查键 '邮箱' 是否存在于前期复制字典person_info_copy中:","邮箱" in person_info_copy)
输出结果: