列表、元组、字典、集合-组合数据类型

一、列表

1.创建列表

python 复制代码
# 创建名为nalist的列表,列表元素为USA,CN,ASU
nalist=['USA','CN','ASU']
print("当前列表为:" "nalist", "列表元素为:",nalist)

# 创建列表时,列表中的元素数据类型可以各不相同,如int,string类型,甚至可以是一个列表类型,如在下例中[10,20]为一个list类型,他作为list3的一个元素存在与list3中。
list3=['marry', 2.0, 5, [10,20]]
print(list3)
python 复制代码
#注:直接调用不带参数的list()函数时,将返回一个空列表,即:[]。
words=list('tomorrow')
print(words)

2.添加元素

(1)append整体添加

python 复制代码
li = ["one","two","three"]

# append整体添加
li.append("four")
print(li)

(2)extend分散添加

python 复制代码
li = ["one","two","three"]

# extend 分散添加,将另一个类型中的元素至一添加
li.extend("four")
print(li)  

(3)insert在指定位置插入

python 复制代码
# 在指定位置(下标)插入元素,若指定位置有元素,原有元素向后移。
li.insert(2,"four")
# 不指定下标,会报错
li.insert("four")

print(li)

3.修改元素

python 复制代码
# 直接通过下标进行修改
li = [1,2,3]
li[1] = 'a'
print(li)

4.查找元素

  • in:判断指定元素是否存在列表中,如果存在就返回True,不存在就返回False
  • not in:判断指定元素是否存在列表中,如果不存在就返回True,存在就返回False
python 复制代码
li = ['a','b','c','d']
print('e' in li)

5.定义一个列表,while循环保存已经存在的昵称

python 复制代码
name_list = ['bingbing','susu','zivi']
while True:
    name = input("请输入名字:")
    # 判断昵称是否已经存在
    if name in name_list:
        print(f"您输入的昵称{name}已经存在了哦")
    # 如果昵称不存在
    else:
        print(f"昵称{name}已经被您使用")
    	# 把昵称新增到列表
		name_list.append(name)
		print (name_list)
		break

6.删除列表

(1)del删除

python 复制代码
i = ['a','b','c','d']

# 删除列表
del li

# 根据下标删除
del 1i[2] 
print(li)

(2)pop删除

python 复制代码
# pop:删除指定下标的数据,python3版本默认删除最后一个元素
li = ['a','b','c','d' ]

# 默认删除最后一个元素
li.pop()

# 不能指定元素删除,只能根据下标删除
lio.pop(2)
print(li)

(3)remove删除

python 复制代码
# remove:根据元素的值进行删除

li = ['a','b','c','d','b']
li.remove('d')

# 报错,列表中不存在这个元素
li.remove('t')

# 默认删除最开始出现的指定元素
li. remove ('b')

print(1i)

7.排序

  • sort:将列表按特定顺序重新排列,默认从小到大。
  • reverse:倒序,将列表倒置(反过来)
python 复制代码
li = [1,5,3,2,4]
# 按照从小到大排序
li.sort()
# 倒序
li.reverse()
print(li)

8.列表推导式

(1)格式一:[表达式 for 变量 in 列表]

注意:in后面不仅可以放列表,还可以放range()、可迭代对象。

复制代码
li = [1,2,3,4,5,6]
[print(1*5) for i in li]	#前面的i是表达式
python 复制代码
li = []
for i in range(1,6):
    print(i)
    li.append(i)
print(li)
# 可以写成下面的推导式
[li.append(i) for i in range(1,6)]
print(li)

(2)格式二:[表达式 for 变量 in 列表 if 条件]

python 复制代码
# 把奇数放进列表里面
1i = []
for i in range(1,11):
    if i % 2 == 1:
        li. append (i)
print(li)
# 可以写成以下推导式
[li.append(i) for i in range(1,11) if i % 2 == 1]
print(li)

9.列表嵌套

含义:一个列表里面又有一个列表

python 复制代码
# [4,5,6]是里面的列表
1i=[12,3,[4,5,6]]
# 取出里面的列表
print(1i[3])
# 取出内列表中的下标为2的元素
print(li[3][2])

二、元组

1.基本格式:元组名=(元素1,元素2,元素3...)

python 复制代码
# 所有元素包含在小括号内,元素与元素之间用,隔开,不同元素也可以是不同的数据类型

tua =(1,2, 3,'a','b')
print(type(tua))
tua =()	# 定义空元组
print(type(tua))
tub =('a',) # 只有一个元素的时候,末尾必须加上,否则返回唯一的值的数据类型
print(type(tub))

2.元组与列表的区别

(1)元组只有一个元素末尾必须加,列表不需要

python 复制代码
1i = [1]
print (type (li))

(2)元组只支持查询操作,不支持增删改操作

python 复制代码
li = [1,2,3]
li[1] = 'a'
print(li)
python 复制代码
tua =(1,2,3,1)
print (tua[2])	#元组也有下标,从左往右,从0开始
tua[2] = 'a'	# 报错,元组不支持修改操作
count()、index()、1en()跟列表的用法相同
print(tua.index(2))
print(tua.count(1))
print(len(tua))
print (tua[l:])

3.应用场景

python 复制代码
#函数的参数和返回值
#格式化输出后面的()本质上就是一个元组
name = 'bingbing'
age = 18
print("%s的年龄是:%d" % (name,age))
info = (name,age)
print(type(info))
print("%s的年龄是:%d" % info)
#数据不可以被修改,保护数据的安全

三、字典

1.基本格式:字典名=(键1:值1,键2,值2...}

python 复制代码
# 键值对形式保存,键和值之间用:隔开,每个键值对之间用,隔开

dic = {'name':'bingbing','age':18}
print (type (dic))

# 字典中的键具备唯一性,但是值可以重复
dic2 = {'name':'bingbing','name':'susu'}	#不会报错,键名重复前面的值会被后面的值覆盖。
print(dic2)

dic3 = {'name':'bingbing','name2':'bingbing'}
print (dic3)

2.查看元素

python 复制代码
# 变量名[键名]
dic = {'name':'bingbing','age':18}
print(dic[2]) # 不可以根据下标,字典中没有下标,查找元素需要根据键名,键

# 18
print(dic['age'])
# 报错,键名不存在
print(dic['sex'])
python 复制代码
# 变量名.get(键名)
dic = {'name':'bingbing','age':18}
print(dic.get('name'))	# bingbing
print(dic.get('tel'))	# None --键名不存在,返回None
print(dic.get("tel","不存在"))	# 不存在 --如果没有这个键名,返回自己设置的默认值

3.修改元素

python 复制代码
# 变量名[键名]= 值
dic =('name':'bingbing','age':18}
dic['age']=20	# 列表通过下标修改,字典通过键名修改
Print(dic)

4.添加元素

python 复制代码
# 变量名[键名] = 值
# 注意:键名存在就修改,不存在就新增。
dic = {'name':'bingbing','age':18}
dic['te1'] = 1244668	# 此时没有tel键,新增进字典
print(dic)
dic['te1'] = 12345	# 此时已经有te1键了,修改tel对应的值
print(dic)
dic['remark'] = "在线征婚"
print (dic)

5.删除元素

(1)del删除

python 复制代码
# 删除整个字典 del 字典名
dic = {'name':'bingbing','age':18)
del dic
print(dic) #报错,已经被删除了,找不到这个字典
python 复制代码
# 删除指定键值对,键名不存在就会报错 del 字典名[键名]
dic = {'name':'bingbing','age':18}
del dic['age']
del die['tel']	# 没有指定的键就会报错
print(dic)

(2)clear清空

python 复制代码
# clear():清空整个字典里面的东西,但保留了这个字典
dic = {'name':'bingbing','age':18)
dic.clear()
print (dic)

(3)pop删除

python 复制代码
# pop()删除指定键值对,键不存在就会报错
dic = {'name':'bingbing','age':18}
dic.pop("age")
print(dic)

dic.pop('tel')	# 报错,不存在键名
dic.pop()	# 报错,没有指定键名
dic.popitem()	# 3.7之前的版本是随机删除一个键值对,3.7之后的版本默认删除最后一个元素。
print(dic)

6.len()求长度

python 复制代码
dic = {'name':'bingbing','age':18,'tel':'123'}
print(len(dic))	# 3,字典中有3个键值对
li = [1,2,3,4]
print (len(li))
st ='hello'
print(len(st))

7.keys()返回字典里所有键

python 复制代码
dic = {'name':'bingbing','age':18,'tel':'123'}
print(keys(len))

8.values():返回字典里面包含的所有值

python 复制代码
dic = {'name':'bingbing','age':18}
print (dic.values())
for i in dic.values():
print(i)

9.item():返回字典里面包含的所有键值对,键值对以元组形式

复制代码
dic = {'name':'bingbing','age':18}
print(dic.items())

for i in dic.items():
	print (i,type(i))	# i是元组类型

10.字典的应用场景

python 复制代码
# 使用键值对,存储描述一个物体的相关信息

四、集合

1.基本格式:集合名={元素1,元素2,元素3...}

python 复制代码
s1 = {1,2,3}
s1={}	# 定义空字典
s1= set()  # 定义空集合
print(sl,type(s1))

2.集合具有无序性

python 复制代码
s1 = {'a','b','c','d','e','f'}
print(s1)	# 每次运行结果都不一样

s2 = {1,2,3,4,5,6}
print(s2)	# 数字运行结果一样
python 复制代码
# 集合无序的实现方式涉及hash表(工解)
print(hash('a'))
print(hash('b'))
print(hash('c'))          
# 每次运行结果都不同,hash值不同,那么在hash表中的位置也不同,这就实现了集合的无序性
           
print(hash(1))
print(hash(2))
print(hash(3))
# python中int整型的hash值就是它本身,在hash表中的位置不会发生改变,所以顺序也不会改变
           
print(hash('1'))
print(hash('2'))
print(hash('3'))
print(hash('4'))
# 用引号括起来整型变成了字符串类型,所以hash值还是会发生改变
# 无序性,不能修改集合中的值。

3.集合具有唯一性,可以自动去重

4.添加元素

(1)add 添加的是一个整体

python 复制代码
s2 = {1,2,3,4}
print("原集合:",s2)
# 集合的唯一性,决定了如果需要添加的元素在原集合中已经存在,就不进行任何操作
s2.add(1)
s2.add(5)	# 一次只能添加一个元素
s2.add(5,6)
s2.add((5,6))
print("现集合:",s2)

5.删除集合元素

python 复制代码
#通过 remove(key) 方法可以删除元素。
#discard(key)也可以删除元素,不同的是,如果删除的元素不在集合中,remove会报错,discard不会报错
#例如: clear() 删除集合的所有元素(使它成为空集)
s1 = set('abcde')
print(s1)

s1.remove('a')
print(s1)
#当集合中没有a元素时,再次remove会报错
s1.remove('a')

#使用 discard() 删除则不会报错
s1.discard('a')
s1.discard('b')
	
相关推荐
梁同学与Android2 小时前
Android ---【经验篇】ArrayList vs CopyOnWriteArrayList 核心区别,怎么选择?
android·java·开发语言
学烹饪的小胡桃2 小时前
【运维学习】实时性能监控工具 WGCLOUD v3.6.2 更新介绍
linux·运维·服务器·学习·工单系统
ys~~2 小时前
git学习
git·vscode·python·深度学习·学习·nlp·github
知识分享小能手2 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04的桌面环境 (4)
linux·学习·ubuntu
Mqh1807622 小时前
day46 Grad-CAM
python
ss2732 小时前
从零实现线程池:自定义线程池的工作线程设计与实现
java·开发语言·jvm
Lueeee.2 小时前
图解字符驱动模块设计思路
linux
石工记2 小时前
windows 10直接安装多个JDK
java·开发语言