前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python学习笔记(内置数据类型list/tuple/dict/set)

Python学习笔记(内置数据类型list/tuple/dict/set)

作者头像
python与大数据分析
发布2022-03-11 13:20:31
2640
发布2022-03-11 13:20:31
举报
文章被收录于专栏:python与大数据分析

每天一天笔记也好文章也好,感觉还是要求挺高的,写的没点干货也挺难堪的,代码本来就是业余的事情,想写点干货对自己是个既有风险又有挑战的事情,而且写一些干货要有大量的准备工作,自己做不到;但不写心又不甘,一旦放松了就很难再严格要求自己了,所以只能想到哪里写到哪里。

学的写的也并非对工作毫无帮助,比如前两年困扰我的爬取出来百度小区地址和宽带用户表里的九级地址,每种地址都有几万行,靠人力去核对,除非傻子才会干,所以这项工作迟迟无法取得进展,宽带的营销成功率不高,80%与此有关,现在好了,可以通过地址分词后的相似度来解决,虽然没有形成最终的代码,但至少论证了这个可行性。

闲话少说,python内置了许多数据类型,list,tuple,dict,set,很少系统的去看一下他们的初始化、切片、迭代访问、函数、方法等等,今天等于回顾了一下。

详见代码

代码语言:javascript
复制
#--------------------------list-------------------------
#list为python内置数据类型,array为numpy类型
print('--------------------------list--------------------------')
#--------------------------init--------------------------
a = ['physics', 'chemistry', 1997, 2000] #[]定义,可以定义不同数据类型
b = [1, 2, 3, 4, 5 ]                 #[]定义,使用相同类型数据
c = ["a", "b", "c", "d"]           #[]定义,使用相同类型数据
d = list(x for x in range(0,10))    #list+range实例化定义
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
e = [x for x in range(10)]          #[]+range定义
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
f = [x*x for x in range(10)]        #[]+range定义
#[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
g = [[ x for x in range(10)],[y for y in range(10)]] #定义二维数组list
#[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]
h = [1,2,3,4,5]                      #初始化数组
#[1, 2, 3, 4, 5]
i = h*3                              #在一维数组上追加不同列
#[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
j = [h]*3                            #在一维数组上追加不同行,即不同维
#[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]
list1 = [m + n for m in 'abc' for n in 'xyz']  #生成排列组合
#['ax', 'ay', 'az', 'bx', 'by', 'bz', 'cx', 'cy', 'cz']
list1 = [m + n for m in range(3) for n in range(4)] #生成排列组合
#[0, 1, 2, 3, 1, 2, 3, 4, 2, 3, 4, 5]
#['ax', 'ay', 'az', 'bx', 'by', 'bz', 'cx', 'cy', 'cz']
#--------------------------iter--------------------------
for step in a:
    print(step)
for i in range(len(a)):
    print(a[i])
for index, name in enumerate(a):
    print (index," ",name)
#--------------------------slice-------------------------
k = [1, 2, 3, 4, 5 ,6,7,8,9,10]
print('k=',k)
print('k[0]=',k[0])
#k[0]= 1
print('k[0:5]=',k[0:5])
#k[0:5]= [1, 2, 3, 4, 5]
print('k[:5]=',k[:5])
#k[:5]= [1, 2, 3, 4, 5]
print('k[5:]=',k[5:])
#k[5:]= [6, 7, 8, 9, 10]
print('k[:]=',k[:])
#k[:]= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print('k[1:9]=',k[1:9])
#k[1:9]= [2, 3, 4, 5, 6, 7, 8, 9]
print('k[1:9:2]=',k[1:9:2])
#k[1:9:2]= [2, 4, 6, 8]
print('k[9:1:-1]=',k[9:1:-1])
#k[9:1:-1]= [10, 9, 8, 7, 6, 5, 4, 3]
print('k[9:0:-1]=',k[9:0:-1])
#k[9:0:-1]= [10, 9, 8, 7, 6, 5, 4, 3, 2]
print('k[:0:-1]=',k[:0:-1])
#k[:0:-1]= [10, 9, 8, 7, 6, 5, 4, 3, 2]
print('k[::-1]=',k[::-1])
#k[::-1]= [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
print('k[9:0:-2]=',k[9:0:-2])
#k[9:0:-2]= [10, 8, 6, 4, 2]
#--------------------------func--------------------------
m = [1,2,3]
n = [4,5,6,7]
print('len(m)=',len(m))  #3
print('max(m)=',max(m))
print('min(m)=',min(m))
#python3已取消cmp函数,通过operator模块替代
#lt(a,b)相当于a<b     从第一个数字或字母(ASCII)比大小
#le(a,b)相当于a<=b
#eq(a,b)相当于a==b     字母完全一样,返回True,
#ne(a,b)相当于a!=b
#gt(a,b)相当于a>b
#ge(a,b)相当于a>=b
import operator
print('operator.ne(m,n)=',operator.ne(m,n))
print('operator.lt(m,n)=',operator.lt(m,n))
print('operator.le(m,n)=',operator.le(m,n))
print('operator.eq(m,n)=',operator.eq(m,n))
print('operator.gt(m,n)=',operator.gt(m,n))
print('operator.ne(m,n)=',operator.ne(m,n))
#--------------------------oper--------------------------
#1 list.append(obj)    在列表末尾添加新的对象
#2 list.count(obj)     统计某个元素在列表中出现的次数
#3 list.extend(seq)    在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
#4 list.index(obj)     从列表中找出某个值第一个匹配项的索引位置
#5 list.insert(index, obj) 将对象插入列表
#6 list.pop([index=-1])    移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
#7 list.remove(obj)    移除列表中某个值的第一个匹配项
#8 list.reverse()  反向列表中元素
#9 list.sort(cmp=None, key=None, reverse=False)    对原列表进行排序
o = [1,2,3,4,5]
p = [6,7]
v=o+p
print('o+p=',v)
#[1, 2, 3, 4, 5, 6, 7]
o.extend(p)
print('after extend,o=',o)
#extend等同于+
#o= [1, 2, 3, 4, 5, 6, 7]
o.append(p)
print('after append o=',o)
#o= [1, 2, 3, 4, 5, 6, 7, [6, 7]]
#extend和append是不同的,一个是加元素,一个是加序列
print('o.count(6)=',o.count(6)) #1
#在指定位置增加元素
o.insert(len(o),p)
print('after insert o=',o)
#after insert o= [1, 2, 3, 4, 5, 6, 7, [6, 7], [6, 7]]
r=o.index([6, 7])
print('o.index([6, 7])=',o.index([6, 7]))  #7
r=o.pop()
print('after pop o=',o,'return =',r)
#after pop o= [1, 2, 3, 4, 5, 6, 7, [6, 7]] return = [6, 7]
r=o.pop(3)
print('after pop o=',o,'return =',r)
#after pop o= [1, 2, 3, 5, 6, 7, [6, 7]] return = 4
r=o.remove(3)
print('after remove o=',o)
#after remove o= [1, 2, 5, 6, 7, [6, 7]]
o.reverse()
print('after reverse o=',o)
#after reverse o= [[6, 7], 7, 6, 5, 2, 1]
#sort()方法要保证各元素数据类型的一致性
s = [1,3,2,6,9,7,4]
s.sort()
print('after sort() s=', s)
#after sort() s= [1, 2, 3, 4, 6, 7, 9]
s.sort(reverse=True)
print('after sort(reverse=True) s=',s)
#after sort(reverse=True) s= [9, 7, 6, 4, 3, 2, 1]
a = [(2, 2), (3, 4), (4, 1), (1, 3)]
a.sort(key=lambda y:y[0])
print('after a.sort(key=lambda y:y[0]) a=', a)
#after a.sort(key=lambda y:y[0]) a= [(1, 3), (2, 2), (3, 4), (4, 1)]
a.sort(key=lambda y:y[1])
print('after a.sort(key=lambda y:y[1]) a=', a)
#after a.sort(key=lambda y:y[1]) a= [(4, 1), (2, 2), (1, 3), (3, 4)]
#sort支持正逆排序,也支持key方式,同样key支持lambda方式

#--------------------------tuple-------------------------
#Python 的元组与列表类似,不同之处在于元组的元素不能修改。
print('--------------------------tuple-------------------------')
#--------------------------init--------------------------
a = ('Google', 'Runoob', 1997, 2000)
b = (1, 2, 3, 4, 5 )
c =  1, 2, 3, 4, 5
d = ("a", "b", "c", "d")
e = "a", "b", "c", "d"
f= ['Google', 'Taobao', 'Runoob', 'Baidu']
g=tuple(f)
h = (50)
print(type(h))   #<class 'int'>
h = (50,)
print(type(h))   #<class 'tuple'>
#--------------------------slice-------------------------
#tuple的切片和list也是一样的
k = (1, 2, 3, 4, 5 ,6,7,8,9,10)
print('k=',k)
print('k[0]=',k[0])
#k[0]= 1
print('k[0:5]=',k[0:5])
#k[0:5]= [1, 2, 3, 4, 5]
print('k[:5]=',k[:5])
#k[:5]= [1, 2, 3, 4, 5]
print('k[5:]=',k[5:])
#k[5:]= [6, 7, 8, 9, 10]
print('k[:]=',k[:])
#k[:]= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print('k[1:9]=',k[1:9])
#k[1:9]= [2, 3, 4, 5, 6, 7, 8, 9]
print('k[1:9:2]=',k[1:9:2])
#k[1:9:2]= [2, 4, 6, 8]
print('k[9:1:-1]=',k[9:1:-1])
#k[9:1:-1]= [10, 9, 8, 7, 6, 5, 4, 3]
print('k[9:0:-1]=',k[9:0:-1])
#k[9:0:-1]= [10, 9, 8, 7, 6, 5, 4, 3, 2]
print('k[:0:-1]=',k[:0:-1])
#k[:0:-1]= [10, 9, 8, 7, 6, 5, 4, 3, 2]
print('k[::-1]=',k[::-1])
#k[::-1]= [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
print('k[9:0:-2]=',k[9:0:-2])
#k[9:0:-2]= [10, 8, 6, 4, 2]
#--------------------------func--------------------------
m = (1,2,3)
n = (4,5,6,7)
print('len(m)=',len(m))  #3
print('max(m)=',max(m))
print('min(m)=',min(m))
#python3已取消cmp函数,通过operator模块替代
#lt(a,b)相当于a<b     从第一个数字或字母(ASCII)比大小
#le(a,b)相当于a<=b
#eq(a,b)相当于a==b     字母完全一样,返回True,
#ne(a,b)相当于a!=b
#gt(a,b)相当于a>b
#ge(a,b)相当于a>=b
import operator
print('operator.ne(m,n)=',operator.ne(m,n))
print('operator.lt(m,n)=',operator.lt(m,n))
print('operator.le(m,n)=',operator.le(m,n))
print('operator.eq(m,n)=',operator.eq(m,n))
print('operator.gt(m,n)=',operator.gt(m,n))
print('operator.ne(m,n)=',operator.ne(m,n))
#--------------------------iter--------------------------
#tuple的迭代和list是完全一样的
for step in a:
    print(step)
for i in range(len(a)):
    print(a[i])
for index, name in enumerate(a):
    print (index," ",name)
#--------------------------oper--------------------------
#tuple无法修改元祖,因此少了很多方法
o = (1,2,2,3,4,5)
p = (6,7)
v=o+p
print('o+p=',v)
#[1, 2, 3, 4, 5, 6, 7]
print('o.count(2)=',o.count(2)) #2
r=o.index(3)
print('o.index(3)=',o.index(3))  #3
s = (1,3,2,6,9,7,4)
a = sorted(s)
print('after sorted() new tuple=', a)
#after sorted() new tuple= [1, 2, 3, 4, 6, 7, 9]
print('after sorted() new old=', s)
#after sorted() new old= (1, 3, 2, 6, 9, 7, 4)
a=sorted(s,reverse=True)
print('after sorted(reverse=True) new_tuple=',a)
#aafter sorted(reverse=True) new_tuple= [9, 7, 6, 4, 3, 2, 1]
s = ((2, 2), (3, 4), (4, 1), (1, 3))
a =sorted(s,key=lambda y:y[0])
print('s=',s)
print('after sorted(key=lambda y:y[0]) a=', a)
#after sorted(key=lambda y:y[0]) a= [(1, 3), (2, 2), (3, 4), (4, 1)]
a =sorted(s,key=lambda y:y[1])
print('after sorted(key=lambda y:y[1]) a=', a)
#after sorted(key=lambda y:y[1]) a= [(4, 1), (2, 2), (1, 3), (3, 4)]
#tuple不支持增删改排序,但排序可以通过sorted复制达到目标,不过会转成list类型

#--------------------------set---------------------------
print('--------------------------set---------------------------')
#--------------------------init--------------------------
a = {'Mary', 'Jim', 'Rose', 'Jack', 'Tom'} #{'Jim', 'Tom', 'Jack', 'Mary', 'Rose'}
b = {1,2,3,4}  #{1, 2, 3, 4}
c=set('abracadabra')  #{'a', 'd', 'b', 'c', 'r'}
d=set('alacazam')     #{'a', 'l', 'z', 'c', 'm'}
e=set([12345,1234,123,12,1])  #{1, 12, 1234, 12345, 123}
f=set((12345,1234,123,12,1))  #{1, 12, 1234, 12345, 123}
#--------------------------slice-------------------------
#集合没有下标,顺序,所以不支持切片
#--------------------------iter--------------------------
#集合不支持下标式访问,只能遍历
for one in a:
    print(one)
s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
for x in s:
    print(x[0] + ' ', x[1])
#--------------------------func--------------------------
print('c=',c)
#c= {'d', 'c', 'a', 'b', 'r'}
print('d=',d)
#d= {'l', 'a', 'c', 'z', 'm'}
print('c - d=',c - d)     # a和b的差集
#c - d= {'r', 'd', 'b'}
print('c | d=',c | d)     # a和b的并集
#c | d= {'l', 'b', 'a', 'r', 'd', 'c', 'z', 'm'}
print('c & d=',c & d)     # a和b的交集
#c & d= {'c', 'a'}
print('c ^ d=',c ^ d)     # a和b中不同时存在的元素
#c ^ d= {'l', 'r', 'b', 'd', 'z', 'm'}
#--------------------------oper--------------------------
a={1,2,3}
b={4,5}
c=6
a.add(c)
print('after a.add(c)=',a)
#after a.add(c)= {1, 2, 3, 6}
a.update(b)
print('after a.update(b)=',a)
#after a.update(b)= {1, 2, 3, 4, 5, 6}
#add只能是元素,update参数可以是列表,元组,字典
a.remove(c)
print('after a.remove(c)=',a)
#after a.remove(c)= {1, 2, 3, 4, 5}
a.discard(7)
print('after a.discard(7)=',a)
#after a.discard(7)= {1, 2, 3, 4, 5}
#remove和discard均为删除元素,不过当要删除的值不在集合中时,discard不会报错
a.clear()
print('after a.clear()=',a)
#after a.clear()= set()

#--------------------------dict--------------------------
#字典是另一种可变容器模型,且可存储任意类型对象。
print('--------------------------dict--------------------------')
#--------------------------init--------------------------
a = {'a':1,'b':2,'c':3}
b = dict({'a':1, 'b':2, 'c':3})
c = dict([('a',1), ('b', 2), ('c', 3)])
d = dict((('a',1), ('b', 2), ('c', 3)))
e = dict([['a',1], ['b', 2], ['c', 3]])
f = dict((['a',1], ['b', 2], ['c', 3]))
g = dict(a=1, b=2, c=3)
h = dict(zip(['a', 'b', 'c'], [1,2,3]))
print(a,b,c,d,e,f,g,h)
#--------------------------slice-------------------------
print('a["a"]=',a['a'])
#a["a"]= 1
#--------------------------iter--------------------------
for i in a.items():
    print(i)
for i in a.items():
    print(i[0],' ',i[1])
for key,value in a.items():
    print(key,' ',value)
for (key,value) in a.items():
    print(key,' ',value)
for key in a:
    print(key+' '+ str(a[key]))
for key in a.keys():
    print(key+' '+ str(a[key]))
for value in a.values():
    print(value)
#--------------------------func--------------------------
a = {'a':1,'b':2,'c':3}
b = {'d':4,'e':5}
c = {'c':4,'f':6}
d = {'g':7,'h':8,'i':9}
del d['g']  # {'h': 8, 'i': 9}
d.clear()    # {}
del d        # 删除字典
print(len(a))   #3
print(str(a))   #{'a': 1, 'b': 2, 'c': 3}
#--------------------------oper--------------------------
dict = {'Name': 'Runoob', 'Age': 27}
print ("Age 值为 : %s" %  dict['Age'])            #Age 值为 : 27
print ("Age 值为 : %s" %  dict.get('Age'))        #Age 值为 : 27
print ("Sex 值为 : %s" %  dict.get('Sex'))        #Sex 值为 : None
print ("Sex 值为 : %s" %  dict.get('Sex', "NA"))  #Sex 值为 : NA
print('dict.keys()=',dict.keys())                 #dict.keys()= dict_keys(['Name', 'Age'])
print('dict.keys()=',list(dict.keys()))           #dict.keys()= ['Name', 'Age']
print('dict.values()=',dict.values())             #dict.values()= dict_values(['Runoob', 27])
print('dict.values()=',list(dict.values()))       #dict.values()= ['Runoob', 27]
print('dict.pop(Name)=',dict.pop('Name'))        #dict.pop(Name)= Runoob
print('after dict.pop(Name)=',dict)              #after dict.pop(Name)= {'Age': 27}
x = ('key1', 'key2', 'key3')
a = dict.fromkeys(x)        #a= {'key1': None, 'key2': None, 'key3': None}
b = dict.fromkeys(x,10)     #b= {'key1': 10, 'key2': 10, 'key3': 10}
dict = {'Name': 'Runoob', 'Age': 7}
dict2 = {'Sex': 'female'}
dict.update(dict2)
print("after dict.update(dict2) dict=", dict) #after dict.update(dict2) dict= {'Name': 'Runoob', 'Age': 7, 'Sex': 'female'}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python与大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档