前言
自春节放假前更新的博客,转眼就来到了清明假期前,时间真是过得飞快,二十几岁,没有十年,今年也要加油呀。
下面这篇博客主要讲非数值型变量,主要介绍①列表②元祖③字典,主要针对这3种类型的变量的简单操作。
列表
说明:表示一串信息的集合,列表索引从0开始,是python里用的最频繁的一种类型。
例子:一个班全部同学的名字,可以定义为一个列表。针对这个列表做简单的增删改查操作。
①列表的定义和取值
# 定义一个列表,字符串需要用双引号引起来
name_list = ["zhangshan", "lisi", "wangwu", "hira", "ergou"]
print(name_list)
print(name_list[1]) # 通过下标取值,下标从0开始
print(name_list.index("lisi")) # 取当前元素在列表的哪个位置,取索引
结果
['zhangshan', 'lisi', 'wangwu', 'hira', 'ergou']
lisi
1
②列表的增删改操作
# 列表的修改和增加
name_list[1] = "李四" # 修改下标为1的元素为“李四”
print(name_list)
name_list.append("隔壁老王") # 在列表末尾追加元素
print(name_list)
name_list.insert(1, "菜花") # 在下标为1的元素前插入“菜花”元素
print(name_list)
temp_list = ["二狗", "皮蛋", "狗蛋"]
name_list.extend(temp_list) # 在列表末尾追加一个完整的列表
print(name_list)
# 列表的删除
name_list.remove("李四")
print(name_list)
name_list.extend(temp_list)
print(name_list)
name_list.remove("二狗") # 当列表里有两个相同元素时,默认是删除第一个
print(name_list)
name_list.pop() # 默认从最末尾删除元素
print(name_list)
del name_list[1] # 从内存中删除,建议日常少用
print(name_list)
print(name_list[1])
结果
['zhangshan', '李四', 'wangwu', 'hira', 'ergou']
['zhangshan', '李四', 'wangwu', 'hira', 'ergou', '隔壁老王']
['zhangshan', '菜花', '李四', 'wangwu', 'hira', 'ergou', '隔壁老王']
['zhangshan', '菜花', '李四', 'wangwu', 'hira', 'ergou', '隔壁老王', '二狗', '皮蛋', '狗蛋']
['zhangshan', '菜花', 'wangwu', 'hira', 'ergou', '隔壁老王', '二狗', '皮蛋', '狗蛋']
['zhangshan', '菜花', 'wangwu', 'hira', 'ergou', '隔壁老王', '二狗', '皮蛋', '狗蛋', '二狗', '皮蛋', '狗蛋']
['zhangshan', '菜花', 'wangwu', 'hira', 'ergou', '隔壁老王', '皮蛋', '狗蛋', '二狗', '皮蛋', '狗蛋']
['zhangshan', '菜花', 'wangwu', 'hira', 'ergou', '隔壁老王', '皮蛋', '狗蛋', '二狗', '皮蛋']
['zhangshan', 'wangwu', 'hira', 'ergou', '隔壁老王', '皮蛋', '狗蛋', '二狗', '皮蛋']
wangwu
③列表的统计、排序、遍历操作
# 统计
print(len(name_list)) # 统计列表总个数
print(name_list.count("皮蛋")) # 统计元素出现的个数
# 排序
a_list = ["A", "F", "C", "P"]
num_list = [3, 5, 0, 2]
print("字母列表初始值为%s,数据列表初始值为%s" % (a_list, num_list))
a_list.sort() # 升序排序
num_list.sort()
print("将字母列表升序排序%s,将数字列表升序排序%s" % (a_list, num_list))
a_list.sort(reverse=True) # 降序排序
num_list.sort(reverse=True)
print("将字母列表降序排序%s,将数字列表降序排序%s" % (a_list, num_list))
a_list.reverse() # 逆转元素
num_list.reverse()
print("将字母列表逆转排序%s,将数字列表逆转排序%s" % (a_list, num_list))
# 遍历列表中的元素
for my_name in name_list:
print("我的名字叫%s" % my_name)
结果
9
2
字母列表初始值为['A', 'F', 'C', 'P'],数据列表初始值为[3, 5, 0, 2]
将字母列表升序排序['A', 'C', 'F', 'P'],将数字列表升序排序[0, 2, 3, 5]
将字母列表降序排序['P', 'F', 'C', 'A'],将数字列表降序排序[5, 3, 2, 0]
将字母列表逆转排序['A', 'C', 'F', 'P'],将数字列表逆转排序[0, 2, 3, 5]
我的名字叫zhangshan
我的名字叫wangwu
我的名字叫hira
我的名字叫ergou
我的名字叫隔壁老王
我的名字叫皮蛋
我的名字叫狗蛋
我的名字叫二狗
我的名字叫皮蛋
元祖
说明:与列表不同的是,元祖定义之后不可修改,同时元祖可以保存不同类型的变量。
例子:一个同学的信息,可以定义为一个元祖。针对这个元祖做简单的操作。
①元祖的定义和取值
# 元祖定义了不可修改
info_tuple = ("siri", 18, 187)
print(type(info_tuple)) # 查看元祖类型
print(info_tuple[0]) # 取值
empty_tuple = () # 定义空元祖
single_tuple = (5) # 类型为int,非元祖
print(type(single_tuple))
single_tuple1 = (5, )
print(type(single_tuple1)) # 定义一个元素的元祖,类型为tuple
print(info_tuple.index("siri")) # 取索引
结果
<class 'tuple'>
siri
<class 'int'>
<class 'tuple'>
0
②元祖的统计、遍历和格式化字符
print(info_tuple.count("siri")) # 统计siri在元祖中的个数
print(len(info_tuple)) # 统计元祖的个数
# 循环遍历 元祖遍历使用的不多,因为元祖元素的类型不同,导致格式化操作不确定
for item in info_tuple:
print(item)
# 实际运用之格式化字符串
print("%s年龄是%d,身高是%2.f。" % ("hey", 18, 178))
print("%s年龄是%d,身高是%2.f。" % info_tuple)
1
3
siri
18
187
hey年龄是18,身高是178。
siri年龄是18,身高是187。
③元祖和列表间相互转换
# 元祖与列表转换
num_list = [1, 2, 3, 4]
print(type(num_list))
num_list = tuple(num_list) # 将列表转换为元祖类型
print(type(num_list))
num_list = list(num_list) # 将元祖类型转换为列表类型
print(type(num_list))
结果
<class 'list'>
<class 'tuple'>
<class 'list'>
字典
说明:与列表不同的是,字典是一个无序的对象集合。字典是以键值对的形式成对出现,key是唯一的,key的类型可以是字符串、数字或元祖,value可以是任何类型。
例子:一个同学的信息,可以定义为一个字典。针对这个字典做简单的操作。
①字典的定义和取值
# 字典是一个无序的数据集合,是以key和value的形式展现,
# key是唯一的,类型可以是字符串、数字、元祖
# value可以是任何类型
siri = {"name": "siri",
"age": 18,
"gender": True}
print(siri["name"]) # 取值
结果
siri
②字典的增删改和统计
siri["city"] = "苏州" # 增加元素
print(siri)
siri["age"] = 19 # 修改元素
print(siri)
siri.pop("gender") # 删除元素
print(siri)
print(len(siri)) # 统计键值对的数量
siri_temp = {"height": 180,
"lang": "EN",
"age": 20}
siri.update(siri_temp) # 合并字典,若key已存在,则更新元素
print(siri)
print(siri_temp)
siri_temp.clear() # 清空字典
print(siri_temp)
结果
{'age': 18, 'city': '苏州', 'name': 'siri', 'gender': True}
{'age': 19, 'city': '苏州', 'name': 'siri', 'gender': True}
{'age': 19, 'city': '苏州', 'name': 'siri'}
3
{'city': '苏州', 'age': 20, 'height': 180, 'name': 'siri', 'lang': 'EN'}
{'age': 20, 'height': 180, 'lang': 'EN'}
{}
③字典的遍历
# 遍历字典
for k in siri:
print("%s=%s" % (k, siri[k]))
# 将字典存储在列表中,再循环遍历可得到一个字典的整条信息
card_list = [
{"name": "hey", "QQ": "987909654", "ID": "87654"},
{"name": "liming", "QQ": "098779654", "ID": "87655"},
{"name": "liu", "QQ": "9879098643", "ID": "87656"},
{"name": "yayoku", "QQ": "193854554", "ID": "87657"}
]
# 循环遍历
for card_info in card_list:
print(card_info)
结果
city=苏州
age=20
height=180
name=siri
lang=EN
{'name': 'hey', 'ID': '87654', 'QQ': '987909654'}
{'name': 'liming', 'ID': '87655', 'QQ': '098779654'}
{'name': 'liu', 'ID': '87656', 'QQ': '9879098643'}
{'name': 'yayoku', 'ID': '87657', 'QQ': '193854554'}
备注:以上代码①列表②元祖③字典各为一个py文件,从上而下,为了方便阅读,将其拆分。