码迷,mamicode.com
首页 > 编程语言 > 详细

python基本数据类型(二)

时间:2018-08-27 10:32:36      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:存在   直接   并集   count   diff   不能   item   lists   正数   

列表

(列表: list / 数组 / array),编号叫下标 / 索引 / 角标
最前面一个元素的下标时0,最后面一个元素的下标是 -1
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

  

元组

元组也是一个list,它和 list 的区别是,元组里面的元素无法修改

t = (aaa,bbb,ccc,ddd,ee)
print(type(t))  #<class ‘tuple‘>
print(t[:3])  #元组的切片:(‘aaa‘, ‘bbb‘, ‘ccc‘)
print(t[4:])    # (‘ee‘,) 输出在元素后面加一个逗号,代表元组

#元组只有这两种方法,元组不能被修改。
print(t.index(aaa))   #找到元素的下标
print(t.count(aaa))   #找到元素的个数    

t2 =(1,2,4)
words = (1)
words2 = (abc)
print(t2,type(t2))    #t2 <class ‘tuple‘>
print(words,type(words))  #words <class ‘int‘>
print(words2,type(words2))    #words2 <class ‘str‘>
#如果元组里面只有一个元素的话,那么你必须在这个元素后面加一个逗号,才能成为元组。

字典

字典是 key - vaule 的形式
1. 取数据方便
2. 速度快
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这个方法判断交集。

 

python基本数据类型(二)

标签:存在   直接   并集   count   diff   不能   item   lists   正数   

原文地址:https://www.cnblogs.com/pigwood/p/9540339.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!