Python(四) 列表、元组、字典、集合
一、列表
1.列表的定义和元素的访问
2.列表查询操作
3.列表增加操作
4.列表删除操作
5.列表修改操作
6.使用循环遍历列表
7.列表嵌套
1.列表的定义和元素的访问
list1 = ['告诸往而知来者', '无波真古井', '十里看山归', 0]
# 列表支持直接输出
print(list1)
# 列表在计算机中的存储结构和我们的str类似,都是占用一段连续的内存地址
# 计算机的内存也会对列表中的每个元素进行编号,默认编号从0开始
print(list1[2])
# 遍历输出,一般和for联合使用
for i in list1:
print(i)
2.列表查询
list1 = ['告诸往而知来者', '无波真古井', '十里看山归', 0]
# index()方法:指定数据所在位置的下标
print(list1.index('无波真古井'))
# count()方法:统计数据在当前列表中出现的次数
print(list1.count('十里看山归'))
# in()方法:判断指定数据在某个列表序列,如果在返回true,不在返回false
# notin():不在返回true,在返回false
block_ips = ['192.168.27.5','10.1.1.100','222.246.129.81']
if '10.1.1.100' in block_ips:
print("警告")
else:
print("ok")
3.列表增加操作
list1 = ['告诸往而知来者', '无波真古井', '十里看山归', 0]
list2 = ['不知谁续广寒游', '时有微凉不是风']
# append() 增加指定的数据到列表中
list1.append('文过饰非')
print(list1) # ['告诸往而知来者', '无波真古井', '十里看山归', 0, '文过饰非']
# list.append(list2) # TypeError: append() takes exactly one argument (0 given)
# extend() 列表结尾追加数据,如果数据是一个序列,则这个序列的数据注意添加到列表
list1.extend('唐诗宋词')
print(list1) # ['告诸往而知来者', '无波真古井', '十里看山归', 0, '文过饰非', '唐', '诗', '宋', '词']
# insert() 指定位置新增数据
list1.insert(2, '远芳侵古道')
print(list1) #['告诸往而知来者', '无波真古井', '远芳侵古道', '十里看山归', 0, '文过饰非', '唐', '诗', '宋', '词']
4.列表删除操作
list1 = ['告诸往而知来者', '无波真古井', '远芳侵古道', '十里看山归', 0, '文过饰非', '唐', '诗', '宋', '词']
# del 列表[索引] 删除列表中的某个元素
del list1[4]
print(list1)
# pop() 删除最后一个数据,并返回该数据
item1 = list1.pop()
print(item1)
print(list1)
# remove() 移除列表中某个数据的第一个匹配项
list1.remove('告诸往而知来者')
print(list1)
# clear() 清空列表,删除列表中的所有元素,返回空列表
list1.clear()
print(list1)
5.列表修改操作
list1 = [1, 3, 67, 4, 2, 8, 90]
# 列表[索引]=修改后的值 修改列表中某个元素的值
list1[0] = 88
print(list1)
# reverse() 将数据序列进行倒叙排列
list1.reverse()
print(list1)
# sort() 对列表进行排序
list1.sort()
print(list1)
6.列表的循环遍历
list1 = ['告诸往而知来者', '无波真古井', '远芳侵古道', '十里看山归', 0]
# 使用while循环对列表进行遍历输出
i = 0
# len()求列表中元素的个数
while i < len(list1):
print(list1[i])
i += 1
#使用for循环
for i in list1:
print(i)
7.列表嵌套
所谓列表就是一个列表里面包含了其他的子列表。其他语言中叫二维数组
list1 = [['思子台边风自急', '玉娘湖上月应沉'], ['清声不远行人去', '一世荒城伴夜砧']]
print(list1)
print(list1[0])
print(list1[0][0])
元组、字典、集合
元组可以存储多个数据且元组内的数据是不能修改的
列表可以存储多个数据但是列表中的数据可以修改
字典
集合
字典的定义及应用场景
集合的定义及应用场景
数据序列的公共方法
列表集合字典推导式
二、元组
1.元组定义 使用小括号,且使用逗号隔开各个数据,数据可以是不同数据类型
tuple1 = (10, 20, 30, '今日非而后日又是')
tuple2 = (10,) # 单个数据元组要注意加一个小逗号哦
tuple3 = (10)
print(type(tuple2), type(tuple3)) # <class 'tuple'> <class 'int'> 如果不加逗号类型就不对了
2.元组的特性
其功能与列表相似,都可以用于存储多个元素,但是元组一经定义,其数据就不能进行修改和删除了
tuple1=(10,32,88)
tuple1[1]=66
print(tuple1) #TypeError: 'tuple' object does not support item assignment
3.元组的查询方法
tuple1 = (10, 32, 10, 88)
# 下标访问
print(tuple1[0])
# for循环访问
for i in tuple1:
print(i)
# index()返回元素在元组中出现的位置,这么看是首次出现的位置
# 如果数据不存在就报错,和列表、字符串中的index()方法相同
print(tuple1.index(10))
# count()方法,统计元素在元组中出现的次数
print(tuple1.count(10))
# len()方法 公共方法,元组、字符串、列表都可以使用,求元素个数
print(len(tuple1))
三、字典
1.字典里的数据是以键值对的形式出现,字典数据和数据顺序没有关系,即字典不支持下标,
后期无论数据如何变化,只需要按照对应的键的名字查找数据即可。
dict1 = {'name': 'tom', 'age': 20, 'gender': 'male'}
# key可以是字符串类型也可以是数值类型
# 空字典:
dict2 = {}
dict3 = dict()
# 访问字典中每个元素
print(dict1['name'])
# 数值类型的key
dict2 = {1: 10, 2: 15, 3: 20}
print(type(dict2)) # <class 'dict'>
2.字典的新增操作
字典名称[key]=value
如果key值存在就修改这个key对应的值,如果key值不保存在就新增此键值对
3.字典的删除操作
dict1 = {'name': 'tom', 'age': 20, 'gender': 'male'}
# 删除字典中的某个元素
del dict1['name']
print(dict1)
# 清空字典中的所有key
dict1.clear()
print(dict1)
4.字典修改操作
dict1 = {'name': 'tom', 'age': 20, 'gender': 'male'}
# 字典的新增操作和修改操作语法基本一致
# 字典名称[key]=value
dict1['name'] = '未知人名'
print(dict1)
5.字典的查询方法
①使用具体的某个key值查询数据,如果未找到,则直接报错
②查询的相关方法
person = {'name': 'tom', 'address': '深圳市宝安区', 'age': 20}
# get(key,默认值):根据字典的key获取对应的value值,如果当前查找的key不存在则返回第二个参数(默认值),如果省略第二个参数,则返回none
name1 = person.get('name')
name2 = person.get('okay', '没有哦')
name3 = person.get('okay')
print(name1, name2, name3)
# keys():以列表返回一个字典中的所有键
print(person.keys()) # dict_keys(['name', 'address', 'age'])
# values():以列表返回字典中的所有值
print(person.values()) # dict_values(['tom', '深圳市宝安区', 20])
# items():以列表返回可遍历的(键,值)元组数组 也就是一个键值对组成一对元组[(),()]
print(person.items()) # dict_items([('name', 'tom'), ('address', '深圳市宝安区'), ('age', 20)])
# 遍历
# 字典中有多少键值对,则for循环多少次
# 每次循环时,系统自动将得到的键值对中的键放入变量key,值放进value中
for key, value in person.items():
print(key, value)
四、集合
1.定义和使用
集合set是一个无序,不重复的元素序列
集合号可以想元组一样,设置不可改变类型,也可以默认像字典、列表一样,可以迭代改变。
同时集合里的元素可以是列表、元组、字典。
# 创建集合
s1 = {10, 20, 30, 40}
s2 = set() # 创建空集只能用set(),因为{}用来创建空字典
s3 = {}
print(type(s2), type(s3)) # <class 'set'> <class 'dict'>
# 使用set方法定义一个集合
set2 = set('abcdefg')
print(set2) # {'d', 'f', 'c', 'a', 'g', 'b', 'e'}
print(type(set2)) # <class 'set'>
# 天生去重
set3 = set('aaaiiihkj')
print(set3) # {'h', 'j', 'i', 'k', 'a'}
set4 = {10, 10, 10, 80}
print(set4) # {80, 10}
2.集合操作的相关方法
集合中有增删改,没有修改,因为集合中的数据都是无序的,我们没有办法通过下标等方法访问到每个数据
3.集合的增操作
students = set()
# add():向集合中增加一个单一元素
students.add('蜡笔小新')
students.add('章鱼哥')
print(students)
# update():向集合中增加序列类型的数据(字符串、列表、元组、字典)
# 要注意一下update和字符串类型的数据一起使用
students.update(['柯南', '灰原哀'], '毛利兰')
print(students) # 这里比较有趣 {'毛', '兰', '章鱼哥', '柯南', '蜡笔小新', '利', '灰原哀'}
students.update(('孙悟空', '猪悟能'))
print(students) # {'毛', '猪悟能', '孙悟空', '章鱼哥', '兰', '灰原哀', '利', '蜡笔小新', '柯南'}
4.集合中的删操作
product = {'萝卜', '黄瓜', '牛肉', '西红柿'}
# remove():删除集合中的指定数据,如果数据不存在就报错
product.remove('萝卜')
print(product)
# discard():删除集合中的指定数据,如果数据不存在也会报错
product.discard('牛肉')
print(product)
# product.remove('土豆') # KeyError: '土豆'
product.discard('土豆')
# pop():随机删除集合中的某个数据,并返回这个数据。为什么是随机的嘞,因为集合中数据是无序的。
# 执行原理:系统自动对集合中的元素进行排序,排序后,pop方法自动删除第一个元素
print(product.pop())
print(product)
5.集合中的查询操作
#in
#not in
6.扩展:集合的交集、差集、并集
set1 = {'王弘毅', '张晚意', '檀健次', '李莲花'}
set2 = {'李莲花', '方多病', '笛飞声', '张晚意'}
print(set1 & set2) # {'张晚意', '李莲花'}
print(set1 | set2) # {'王弘毅', '笛飞声', '檀健次', '方多病', '张晚意', '李莲花'}
print(set1 - set2) # {'王弘毅', '檀健次'}
浙公网安备 33010602011771号