Python_base_01 列表、元组和字典
列表:List ,是使用最频繁的数据类型,在其他语言中通常叫做数组。
1.存储一串信息
2.列表用[ ] 定义,用逗号分隔。
3.列表的索引从0开始。
name_list=["zhangsan","lisi","wangwu"]
#取值和取索引
print(name_list[2])
输出结果:wangwu
#知道列表的内容,想确定数据在列表中的位置
print(name_list.index("lisi"))
输出结果:1
#修改
name_list[1]="李四"
print(name_list)
输出结果:['zhangsan', '李四', 'wangwu']
#增加
name_list.append("tianpin ") # append 向列表的末尾追加 →['zhangsan', '李四', 'wangwu', 'tianpin ']
name_list.insert(0,"xiaopin") # insert 向指定位置插入数据 →['xiaopin', 'zhangsan', '李四', 'wangwu', 'tianpin ']
temp_list=["孙阳"]
name_list.extend(temp_list) # extend 把另一个列表的完整内容追加到当前列表的末尾
输出结果:
['xiaopin', 'zhangsan', '李四', 'wangwu', 'tianpin ', '孙阳']
#删除
motorcyles=['honda','yamaha','suzuki']
last_owned=motorcyles.pop()
print(last_owned) #输出 suzuki pop()可删除列表末尾的元素,并让你能够接着使用它的值。
name_list.pop(2) # pop 可以指定删除元素的索引
print(name_list)
name_list.clear() # clear 清空列表
print(name_list)
如果只知道要删除的元素的值,可使用方法 remove()
del name_list[1] #del 将变量从内存中删除
#有单词都是以大写开始
bicys=['trek','cannmojd','resline']
print(bicys[0]) #输出 teck
print(bicys[0].title()) #输出 Trek
列表的数据统计:
name_list=["zhangsan","lisi","wangwu"]
#len (length统计列表的元素的总数)
list_len=len(name_list)
print("列表中包含%d个元素" %list_len)
输出结果:列表中包含3个元素
#count
count=name_list.count("张三")
print("张三出现了 %d 次" %count)
输出结果:张三出现了 0 次
列表的排序:
name_list=["zhangsan","lisi","wangwu"]
num_list=[6,8,4,1,10]
#升序
name_list.sort()
num_list.sort()
print(name_list)
print(num_list)
输出结果:
['lisi', 'wangwu', 'zhangsan']
[1, 4, 6, 8, 10]
#降序
name_list.sort(reverse=True)
num_list.sort(reverse=True)
print(name_list)
print(num_list)
#逆序
name_list=["zhangsan","lisi","wangwu"]
num_list=[6,8,4,1,10]
name_list.reverse()
num_list.reverse()
print(name_list)
print(num_list)
输出结果:
['wangwu', 'lisi', 'zhangsan']
[10, 1, 4, 8, 6]
#使用迭代遍历列表
name_list=["张三","李四","王五","王小二"]
遍历就是从头到尾依次从列表中获取数据
#for 循环内部使用的遍历 in 列表:
for my_name in name_list:
print("我的名字是 %s" %my_name)
输出结果:
我的名字是 张三
我的名字是 李四
我的名字是 王五
我的名字是 王小二
#将列表中每个数值乘以3
vec=[2,4,6]
print([3*x for x in vec])
结果:[6, 12, 18]
还可以玩点新花样,如下:
vec=[2,4,6]
print([[x,x**2] for x in vec])
结果:[[2, 4], [4, 16], [6, 36]]
#可以使用if子句作为过滤器,如下:
vec=[2,4,6]
print([3*x for x in vec if x > 3])
结果:[12, 18]
#列表的应用场景
尽管python的列表中可以存储不同类型的数据
但是在开发中,更多的应用场景是
1.列表存储相同类型的数据
2.通过迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作。
元组: tuple 与列表类似,不同之处在于元组不能修改。
1.存储一串信息,通常保存不同类型的数据;
2.列表用()定义,用逗号分隔;
3.列表的索引从0开始。
#定义一个只包含一个数据的元组 可用 print(type(single_tuple))打印类型
single_tuple=(5,)
info_tuple=("zhangsan",18,1.75)
#取值和取索引
print(info_tuple[0])
print(info_tuple.index("zhangsan"))
输出结果:
zhangsan
0
#统计某个数据出现的次数
info_tuple=("zhangsan",18,1.75,"zhangsan")
print(info_tuple.count("zhangsan"))
输出结果:
2
#统计元组中包含元素的个数
info_tuple=("zhangsan",18,1.75,"zhangsan")
print(len(info_tuple))
输出结果:
4
#循环遍历
info_tuple=("zhangsan",18,1.75,"zhangsan")
for my_info in info_tuple:
#使用格式字符串拼接 my_info 这个变量不方便
#因为元组中保存的数据类型是不同的
print(my_info)
#应用场景
1.函数的参数和返回值;
2.格式字符串,格式化字符串后面的()本质上就是一个元组;
3.让列表不可被修改,以保护数据安全。
#格式化字符串的()本质上就是元组
print("%s 年龄是%d,身高是%.2f" %("小明",18,1.75))
输出结果:小明 年龄是18,身高是1.75
info_tuple=("小明",18,1.75)
print("%s 年龄是%d,身高是%.2f" %info_tuple)
#列表转换成元组
num_list=[1,2,3,4]
num_tuple=tuple(num_list)
print(type(num_tuple))
输出结果:
<class 'tuple'>
字典:dictionary 是除列表外python中最灵活的数据类型。
1.和列表的区别:
列表是有序的对象集合
字典是无序的对象集合
2.字典用{}定义
3.字典使用键值对存储数据,键值之间使用:分隔;键必须是唯一的;值可以取任何数据类型,但键只能使用字符串、数字和元组.
xiaoming_dict={"name":"小明"}
#取值
print(xiaoming_dict["name"])
#增加/修改
xiaoming_dict["age"]=18 #如果key不存在,会新增键值对
print(xiaoming_dict)
输出结果:
{'name': '小明', 'age': 18}
xiaoming_dict["name"]="小小明" #如果key存在,会修改键值对
print(xiaoming_dict)
输出结果:{'name': '小小明', 'age': 18}
#删除
xiaoming_dict.pop("name")
print(xiaoming_dict)
#字典的应用场景
#使用多个键值对,存储描述一个物体的相关信息
#将 多个字典 放在一个列表中,再进行遍历
card_list=[
{"name","张三",
"QQ","1234567",
"phone","110"},
{"name", "李四",
"QQ", "12345678",
"phone", "1100"},
]
for my_card in card_list:
print(my_card)
输出结果:
{'name', '1234567', 'QQ', '110', 'phone', '张三'}
{'name', '李四', 'QQ', 'phone', '1100', '12345678'}