python基本数据类型(二)
2021-07-14 04:05
标签:存在 直接 并集 count diff 不能 item lists 正数 元组也是一个list,它和 list 的区别是,元组里面的元素无法修改 python基本数据类型(二) 标签:存在 直接 并集 count diff 不能 item lists 正数 原文地址:https://www.cnblogs.com/pigwood/p/9540339.html列表
cities=[] #定义一个空的列表
#增加元素
cities.append(‘北京‘) #在列表末尾增加一个元素
cities.insert(0,‘上海‘) #在指定的位置插入一个元素,一次只能加一个。
#删除元素
cities.pop(-1) #删除指定的元素,传下标
cities.remove(‘北京‘) #删除指定的元素,传元素
cities.clear() #清空列表
del cities[-1] #删除指定位置的元素,传下标
#修改
cities[1] = ‘南京‘ #指定某一个下标,直接修改即可,指定下标不能超出已有下标范围。
#查询
print(cities) #打印整个列表
print(cities[0]) #打印指定位置的元素
print(cities.index(‘广州‘) #获取元素的下标,如果元素不存在,则报错
print(cities.count(‘广州‘) #查看元素在list 出现了几次
print(cities.reverse()) #返回None,但把列表反转了要重新print(cities)才能看到结果,如下:
cities.reverse() #将cities 反转
print(cities) #打印cities
cities.sort() #默认升序排序
cities.sort(reverse=True) #降序排序,按数字或字母排序
print(cities1 + cities2) #合并list
#切片,切片是list取值的一种方式
print(nums[1:3]) #切片只顾头不顾尾,即取下标1到3(不包括3)。
print(nums[1:]) #如果从某个下标开始取到末尾,末尾的下标可以省略
print(nums[:2]) #如果是从头开始取,取到后面某个下标(不包括)结束,开头的下标可以不写
print(nums[:]) #取出全部
列表排序的3种方法:
list.reverse()
random.shuffle(list)
list.sort()
#循环
for i in range(1,4): #range()也是顾头不顾尾
print(i) #打印结果:1、2、3
lis= list(range(1,21)) #类型转换为list
print(lis) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
#步长
lis= list(range(1,21))
print(lis[1:10:2]) #步长,隔2个取一个数字,到第9个下标
lis= list(range(1,21))
print(lis[::-1]) #如果步长时正数的话,就从左到右取值,如果步长为负数,则从右到左取值。相当于把列表反转。与.reverse()的区别是:.reverse()改变了列表的内容。
#当步长为负数时,a:b:-1,a(正)必须大于b(正),否则取值为空
例如:
lis= list(range(0,21))
print(lis)
print(lis[21:10:-1]) #从下标21到下标10取值,但不包含10的下标:[20, 19, 18, 17, 16, 15, 14, 13, 12, 11]
print(lis[:18:-1]) #从下标最大到下标18取值,但不包含18的下标:[20, 19]
print(lis[0::-1]) #从下标0到最小下标取值,只取0的下标:[0]
print(lis[::-1]) #从下标最大取到最小:[20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
s = ‘abcdefghi‘
s[3] =‘h‘ #字符串变量不可以修改,报错:TypeError: ‘str‘ object does not support item assignment
lists = [‘AAA‘,‘BBB‘,‘CCC‘,‘DDD‘]
for name in lists: #循环读取数组中的每一个元素
print(name)
words = ‘marry,lily,joker‘
for name in words: #循环读取字符串中的每一个字符
print(name)
# for 循环在循环可迭代对象的时候,每次循环的是里面的每一个元素。
#如果是一个多维数组,则要判断类型。
lists = [‘AAA‘,‘BBB‘,‘CCC‘,‘DDD‘,[1,2,3,4]]
for name in lists:
if type(name) == list:
for i in name:
print(i) #打印列表中的列表:1 2 3 4
元组
t = (‘aaa‘,‘bbb‘,‘ccc‘,‘ddd‘,‘ee‘)
print(type(t)) #
字典
字典是 key - vaule 的形式ifos ={‘name‘:‘AAA‘,‘sex‘:‘男‘,‘age‘:18}
# 查:字典取值就这两种方式:
print(ifos.get(‘name‘)) #如果key不存在,则返回None
print(ifos[‘name‘]) #如果key不存在,则报错
print(ifos.get(‘aaa‘,‘phone‘)) #指定如果取不到aaa这个key时,默认phone,这是get的另一种方法
#增
ifos[‘phone‘]=1852003000 #字典是无序的,添加的值不一定在最后,如果key存在,则是修改
ifos.setdefault(‘height‘,‘BBB‘) #增加字典的另一种方式
#改
ifos[‘name‘]=‘YYYY‘ #如果key已存在,用这种方式可以修改name的值,仅此一种
ifos.setdefault(‘name‘,‘EBB‘) #如果key已存在,用这种方式不能修改name的值
#删除
ifos.pop(‘age‘) #指定key来删除
ifos.popitem() #随机删除一个key
del ifos[‘phone‘] #指定key来删除
ifos.clear() #清空字典
字典内置的方法:
print(ifos.values()) #获取到字典所有的value:dict_values([‘AAA‘, ‘男‘, 18]:
print(ifos.keys()) #获取到字典的所有的key:dict_keys([‘name‘, ‘sex‘, ‘age‘])
print(ifos.items()) #获取到字典的所有的k-v:dict_items([(‘name‘, ‘AAA‘), (‘sex‘, ‘男‘), (‘age‘, 18)])
#循环
for p in people:
print(p) #循环字典时,打印的时字典的key
for k,v in people.items():
print(k,‘=====>‘,v) #循环时同时取key和value
for k in people.items():
print(k) #循环打印出每一个key的所有值
#TEAM 是一个字典,它的值也是一个字典,如何取值?
TEAM = {
‘a‘: {‘A‘: ‘B‘},
‘b‘: {‘C‘: ‘D‘},
}
TEAM[‘b‘].setdefault(‘X‘,‘Y‘) #在key:b 的value中增加k-v
print(TEAM)
{‘a‘: {‘A‘: ‘B‘}, ‘b‘: {‘C‘: ‘D‘, ‘X‘: ‘Y‘}}
for v in TEAM.values(): #打印出values
print(v)
{‘A‘: ‘B‘}
{‘C‘: ‘D‘, ‘X‘: ‘Y‘}
for k in TEAM.items(): #打印出TEAM的k-v
print(k)
(‘a‘, {‘A‘: ‘B‘})
(‘b‘, {‘C‘: ‘D‘, ‘X‘: ‘Y‘})
for k,v in TEAM.items(): #打印出k,v
print(k,v)
a {‘A‘: ‘B‘}
b {‘C‘: ‘D‘, ‘X‘: ‘Y‘}
for i in TEAM.keys(): #
for k,v in TEAM[i].items(): #
print(i,k,v)
a A B
b C D
b X Y
集合 set
#集合的特点:天生去重,集合也是无序的。
s = set() #定义一个空集合
s2 = set(‘12344455667788‘)
s3 = {1,1,3,4,5,6,7}
s4 = {‘1‘,‘2‘,‘3‘,‘4‘}
print(s2)
#集合还可做关系测试:交集、并集、差集,只有集合才可以做交集、并集、差集操作,其他类型会报错。
print(s3 & s2) #打印为:set(),是因为 s2 中都是字符,s3 是整型。
print(s4 & s2) #取交集
print(s4.intersection(s2)) #取交集
#并集
print(s2 | s3)
print(s2.union(s3))
#差集,取一个集合存在,另一个不存在的元素
c1 = {1,2,3}
c2 = {1,4,6}
print(c1-c2) #{2, 3}
print(c2-c1) #{4, 6}
print(c2.difference(c1)) #{4, 6}
#对称差集,去掉两集合里面都存在的,取不重复的。
print(c1^c2) #{2, 3, 4, 6}
print(c1.symmetric_difference(c2))
c1.add(‘ss‘) #加元素
print(c1)
c1.pop() #随机删一个元素
print(c1)
c1.remove(‘ss‘) #指定删除
print(c1)
c1.update({5,6,7}) #把另一个集合加进去
print(c1)
#也可以用isdisjoint这个方法判断交集。