设为首页 收藏本站
查看: 1131|回复: 0

[经验分享] Python 列表和字典用法解释

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-4-18 10:20:08 | 显示全部楼层 |阅读模式
1、列表可包含任意对象:数字,字符串,其他列表,集合,字典,元组

                例如:

                L = [1,2,3,[12,3]]

                print(L)

                L = [1,2,4,{1,2}]

                print(L)

                L = [1,23,{'a':1,'b':2}]

                print(L)

                L = [1,2,(1,23)]

                print(L)

2、创建列表的方法:

                L = [11,2,3,4]

                或

                L = list('spam')   或者 L = list(range-4,4)

3、列表常用操作

                L = L1 +L2   #返回L1合并L2后的列表

                L1 = [1,2,3,[12,3]]

                print(L1)

                L1.append(4)  #向其末尾增加一个新的元素

                print(L1)   #输出:[1,2,3,[12,3],4]

                L1.extend([1,2,3])  #向其中添加好几个元素

                print(L1)  #输出:[1, 2, 3, [12, 3], 4, 1, 2, 3]

                L1.insert(1,'abc')               #第一个参数是索引位置,第二参数是插入到这个位置值

                print(L1)          #输出:[1, 'abc', 2, 3, [12, 3], 4, 1, 2, 3]

                print(L1.index(1))  #查找元素在列表中第一次出现的位置

                L = [ 1,3,6,2,7]

                L.sort()  #排序

                print(L)     #输出:[1, 2, 3, 6, 7]

                L = ['a','d','c','b']

                L.sort()

                print(L)    #输出:a,b,c,d,e

                #L = [1,5,2,[1,4]]

                #L.sort()          好像只能对数字,或者字母进行排序,而且不能嵌套

                L  = ['ds','a','dsd','ew']

                L.sort()     #输出:['a', 'ds', 'dsd', 'ew']

                print(L)

                L = [1,2,3,[5,2,6]]

                L.reverse()  #将列表倒置,列表中可以包含嵌套

                print(L)

                del L[3]   #删除索引所指的位置上的元素

                print(L)  #输出:[[5, 2, 6], 3, 2]

                del L[1:3]  #删除指定分片范围内的元素

                print(L)  #输出:[[5, 2, 6]]

                L = [1,2,3,4]

                print(L.pop())  #谈出尾部一个元素4 也可以加一个参数,这个参数是索引值

                print(L)      #输出:1,2,3

                L.remove(1)  #删除指定的元素例如这里删除了元素1

                print(L)  #输出:2,3

                L[2:] =[5,6,7]   #在指定分片中插入列表

                print(L)                 #输出:2,3,5,6,7

                L[:0] =[5,6,7]   #在指定分片中插入列表

                print(L)    #输出:[5, 6, 7, 2, 3, 5, 6, 7]

                #也可以利用分片删除某一个范围内的元素

                L[:3]=[]  #删除0-2索引上的元素

                print(L)  #输出:[2, 3, 5, 6, 7]

                #通过索引修改某一个元素的值

                L[0]=-11111111111111111

                print(L)   #输出:[-11111111111111111, 3, 5, 6, 7]

4、分片操作赋值是一次性替换整个片断,而不是在原有基础上先删除,然后再修改

5、L.append(x)方法和L+[x]功能等价,但前者是在原处L处修改ia,而后者会新建一个新的列表,sort原地对列表进行排序

                例如:

                L =['abc','ABC','aBc']

                L.sort()

                print(L)  #输出:ABD,aBc,abc

                L =['abc','ABC','aBc']

                L.sort(key=str.lower,reverse=True)

                print(L)

                排序在最近的python中作为内置函数

                例如:

                L =['abc','ABC','aBc']

                sorted(L,key=str.lower,reverse=True)

                也有内置的reversed函数,但是该函数返回的是一个迭代器

                例如:

                L = [1,2,3,4,5]

                print(reversed(L))   #输出迭代器,所以必须用list函数,而且不是在原处排序

                print(list(reversed(L)))

5、字典

                字典的几种创建方法:

                D =         {}   #创建一个空列表  然后通过 : D['name']='jack',D['age']=25  创建了一个字典 D = {'name':'jack','age':25}

                D = {'name':'tome','age':23}  #直接指定

                D = dict.fromkeys(['a','b','c'])   #输出:  {'a':None,'b':None,'c':None},

                #这个函数有第二个参数,第二个参数是作为值,默认值是None,

                #例如:

                D = dict.fromkeys(['a','b','c'],'not clear')

                print(list(D.items()))  #输出:[('a', 'not clear'), ('c', 'not clear'), ('b', 'not clear')]

                D = dict(zip(keyslist,valueslist))

                D = dict (name='tom',age=23)

                print(D)    #输出:{'age': 23, 'name': 'tom'}

                D = dict(zip(['a','b','c'],[1,2,3]))  #输出:{'a': 1, 'c': 3, 'b': 2}

                #当keyslist和valueslist数目不一致时,以最短的为准,例如:

                D = dict(zip(['a','b','c','d','e'],[1,2,3,5]))  

                print(D)  #输出:{'a': 1, 'c': 3, 'b': 2, 'd': 5}

6、字典的集中常用方法

                D = {'name':'tome','age':23}

                len(D)   #输出:2   这个函数返回的是字典中元素的个数,也是字典中key的数目

                print('name' in D)  #输出:True   这个函数判断给定的键是否存在于字典中

                print(D.keys())  #在python2.6中返回一个真正的列表,但是在python3.0中返回的是一个迭代器,必须用list强制转化为list

                print(list(D.keys()))  #输出:[name,age]

                print(D.values())  #在python2.6中返回一个真正的列表,但是在python3.0中返回的是一个迭代器,必须用list强制转化为list

                print(list(D.values()))  #输出:[tom,23]

                print(D.items())  #在python2.6中返回一个真正的列表,但是在python3.0中返回的是一个迭代器,必须用list强制转化为list

                print(list(D.items()))  #输出:[('age', 23), ('name', 'tom')]

                print(D.get("address","not clear"))  #get方法通过address获得,当这个键不存在时,返回第二个参数,第二个参数默认值是None

                D2 = {'address':'Liaoning','code':'116023','age':'not clear'}

                D.update(D2)  #合并两个字典,当两个键相同时,则覆盖原来这个键对应的值

                print(list(D.items()))  #输出:[('age', 'not clear'), ('code', '116023'), ('name', 'tome'), ('address', 'Liaoning')]

                D.pop(建)  #从字典中删除指定键这个元素,不能使索引

                例如:

                D.pop("age")

                print(list(D.items()))  #输出:[('code', '116023'), ('name', 'tome'), ('address', 'Liaoning')]

7、遍历字典

                for key in D.keys():

                                print(key,'->',D[key])

                或者

                for item in D:

                                print(item,'->',D[item])

                输出都是:

                age -> not clear

                code -> 116023

                name -> tome

                address -> Liaoning

8、数字,字符串,元组,对象等不变对象都可以作为字典的键,列表,集合,字典等可变对象都不能作为字典的键

                例如:

                D = {1:'tome','age':23}

                print(list(D.items()))

                D = {1:'tome',(1,2):23}

                print(list(D.items()))

                class A:

                                pass

                a = A()

                D = {a:1}

                print(list(D.items()))

                输出:

                [(1, 'tome'), ('age', 23)]

                [((1, 2), 23), (1, 'tome')]

                [(<__main__.A object at 0xb7334b4c>, 1)]

9、当键不存在字典中时,系统会抱错,以下三种方法处理这种情况

                D = {'a':1,'b':2,'c':3}

                if 'd' in D:

                                print(D[d])

                else :

                                print('Not exist')



                #或者

                try :

                                print(D['d'])

                except KeyError:

                                print('Not exist')



                #或者

                print(D.get('d','Not exist'))



10、字典在python3.0中的变化

                1、有字典解析式

                2、keys(),values(),items()返回的是视图,而不是列表

                3、不能直接比较大小

                4、没有has_key判断某一个键是否存在

11、zip函数的使用

                list(zip(['a','b','c'],[1,2,3]))

                #输出:[('a', 1), ('b', 2), ('c', 3)]

12、字典解析式

                D = {s:s*2 for s in [1,2,3,4]}  #输出:[(1, 2), (2, 4), (3, 6), (4, 8)]

13、在python3.0中,keys(),values(),items(),这些视图创建后,这些视图可以动态的反映对原字典的修改,例如:               

                D = {'a':1,'b':2,'c':3}

                k = D.keys()

                v = D.values()

                i = D.items()

                print(list(k))  #输出:'a','b','c'

                print(list(v))        #输出:1,2,3

                print(list(i))  #输出:{'a':1,'b':2,'c':3}

                D['d']=4  #增加一个元素

                print(list(k))  #输出:'a','b','c','d'

                print(list(v))        #输出:1,2,3,4

                print(list(i))  #输出:{'a':1,'b':2,'c':3,'d':4}

14、字典视图和集合

                视图可以与其他试图,集合,字典混合操作

                例如:

                键试图:

                D = {'a':1,'b':2,'c':3}

                k = D.keys()

                #键视图与字典

                print(k|{'x':90})  #输出:{'a', 'x', 'c', 'b'}

                #键试图 与集合

                print(k|{'t','k'})  #输出:{'a', 'c', 'b', 'k', 't'}

                #键视图与建视图

                d = {'i':23,'z':543}

                print(k|d.keys())  #输出:{'a', 'i', 'c', 'b', 'z'}



                items试图:

                D = {'a':1,'b':2,'c':3}

                k = D.items()

                #视图与字典

                print(k|{'x':90})  #输出:{('a', 1), 'x', ('b', 2), ('c', 3)}   #把字典中的键和原字典中的键和值当作元组加入到集合中

                #试与集合

                print(k|{'t','k'})  #输出:{('a', 1), ('b', 2), ('c', 3), 'k', 't'}  #把集合中的值和原字典中的键和值当作元组加入到集合中

                #试图与视图

                d = {'i':23,'z':543}

                print(k|d.items())  #输出:{('a', 1), ('z', 543), ('b', 2), ('c', 3), ('i', 23)} #把新字典中的键和值当作元组和原字典中的键和值当作元组加入到集合中

15、字典排序:            

                方法一:

                D = {'a':1,'d':2,'c':3}

                k = D.keys()

                temp = list(k) #因为返回值是试图所以不能对其直接排序,必须转化为列表

                temp.sort()

                for k in temp:

                                print(k,'->',D[k])

                方法二:

                D = {'a':1,'d':2,'c':3}

                k = D.keys()

                for k in sorted(k):

                                print(k,'->',D[k])


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-17683-1-1.html 上篇帖子: 对python变量的理解 下篇帖子: python encode和decode的妙用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表