python基础课程系列(补充2)

二、列表,字典
1.List列表
1)创建list //list内部的对象可以是字符串,字符,数字,支持混搭
>>> L = ['apple', 100, 0.01, 'banana', 'A', 'B', 'C']
>>> L
['apple', 100, 0.01, 'banana', 'A', 'B', 'C']

2)访问list //直接通过下标去访问
>>> L[0]
'apple'

3)列表的切片 //通过切片来取列表中的一部分
>>> L[4:6]
['A', 'B']

4)列表的嵌套 //列表支持嵌套,就是列表里面可以套列表,甚至套字典,元组等
>>> L1 = [100, 200, ['aaa', 'bbb', 'ccc']]
>>> L1
[100, 200, ['aaa', 'bbb', 'ccc']]
>>> L1[2][0]
'aaa'

5)列表的插入//内置函数append,insert
>>> L
['apple', 100, 0.01, 'banana', 'A', 'B', 'C']
>>> L[2] = 'orange'
>>> L
['apple', 100, 'orange', 'banana', 'A', 'B', 'C']
>>> L.append('D')
>>> L
['apple', 100, 'orange', 'banana', 'A', 'B', 'C', 'D']
>>> L.insert(0, 'red')
>>> L
['red', 'apple', 100, 'orange', 'banana', 'A', 'B', 'C', 'D']

6)列表的删除//内置remove,pop函数
>>> L
['red', 'apple', 100, 'orange', 'banana', 'A', 'B', 'C', 'D']
#明确需要删除的对象在列表中的位置
>>> del L[0]
>>> L
['apple', 100, 'orange', 'banana', 'A', 'B', 'C', 'D']
#明确要删除哪个对象
>>> L.remove('B')
>>> L
['apple', 100, 'orange', 'banana', 'A', 'C', 'D']
#删除队尾
>>> L.pop()
'D'
>>> L
['apple', 100, 'orange', 'banana', 'A', 'C']

7)列表支持*,+
>>> list1 = [1,2,3]
>>> list2 = [100,200,300]
>>> list3 = list1 + list2
>>> list3
[1, 2, 3, 100, 200, 300]

>>> list4 = ['a', 'b', 'c']
>>> list5 = list4 * 3
>>> list5
['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']

8)列表的排序//内置了sort函数非常方便,通过传入reverse为True或者False来升序或者降序排列
>>> bList = [1, 20, 30 ,50, -1, -20, -200, -200.5, 900]
>>> bList.sort(reverse=False)    #升序
>>> bList
[-200.5, -200, -20, -1, 1, 20, 30, 50, 900]
>>> bList.sort(reverse=True)    #降序
>>> bList
[900, 50, 30, 20, 1, -1, -20, -200, -200.5]

9)计算列表的长度 //利用内置函数len()
>>> len(bList)
9

10)计算列表里面的最大值,最小值
>>> min(bList)
-200.5
>>> max(bList)
900

11)列表的扩展 //用内置extend函数,看起来和+差不多,其实区别在于+是返回一个新的列表,而extend是直接修改了列表
>>> aList = [1, 2, 3]
>>> b = [4, 5, 6]
>>> aList.extend(b)
>>> aList
[1, 2, 3, 4, 5, 6]

12)查找列表中某一个元素的索引//内置函数index
>>> aList = ['This', 'is', 'a', 'very', 'good', 'idea']
>>> aList.index('very')
3

13)统计某个元组在列表里面的次数,内置函数count
>>> aList = ['to', 'do', 'or', 'not', 'to', 'do']
>>> aList.count('to')
2

2.元组
元组和列表一样,也是一种序列,唯一的不同在于不能修改
1)元祖的创建
>>> aTuple = (1, 2, 3)
>>> aTuple
(1, 2, 3)

2)元组的用法和列表一模一样
很多初学者会问,既然用法和列表一样,为啥还要发明元组,原因在于:
2.1.有一些特殊的场合需要不可变序列,比如后面会讲道的数据结构字典,必须要用不可变序列作为键值,而列表不行。
2.2.有一些内建的函数的返回值,也必须是元组.

3.字典和列表小技巧
1)Python的中拷贝
>>> a = [1, 2, 3]
>>> b = a
>>> b.append(4)
>>> print(id(a),a)
2232642177992 [1, 2, 3, 4]
>>> print(id(b),b)
2232642177992 [1, 2, 3, 4]

用id()函数来查看对象的唯一识别号,发现a,b是一样的,原因是因为b只是a的引用,都是同一个地址,并没有实现真正的copy

>>> import copy
>>> a = [1, 2, 3]
>>> b = copy.copy(a)
>>> b.append(4)
>>> print(id(a), a)
2232642178120 [1, 2, 3]
>>> print(id(b), b)
2232642178376 [1, 2, 3, 4]

2)如何把字典的缺省值为100
>>> aDict = {}.fromkeys(('aa', 'bb', 'cc'), 100)
>>> for k,v in aDict.items():
    print(k,v)

aa 100
bb 100
cc 100

3)如何让列表中的元素存在就返回,不存在就返会默认值
>>> d = {1:'aa', 2:'bb', 3:'cc'}
>>> d.get(3)
'cc'
>>> d.get(4)
>>> d.get(4,'no exit')
'no exit'

4)循环访问序列中的元素和索引
我们需要循环访问一个序列并且每一步都知道自己已经访问到的索引,并替换掉对应的值
>>> list1 = [1, 2, 10, 4]
>>> for index, item in enumerate(list1):
    if item >9 :
        list1[index] = 3
>>> list1
[1, 2, 3, 4]

5)如何用字典格式化长的字符串
>>> aInfo = {'Wangdachui':3000, 'NiuYun':2000, 'LinLing':4500, 'Tianqi':8000}
>>> template = 'Welcome to the pay wall. NiuYun\'s salary is %(NiuYun)s. Wangdachui\'s salary is %(Wangdachui)s.'
>>> print(template%aInfo)
Welcome to the pay wall. NiuYun's salary is 2000. Wangdachui's salary is 3000.

6)字典的更新
一般用在已经设定好了数据结构,比如股票的信息(股票的价格的变动),工资单啊(工资的变动,人员的增加),key一般不变,只是变value
>>> aInfo = {'Wangdachui':3000, 'NiuYun':2000, 'LinLing':4500, 'Tianqi':8000}
>>> bInfo = {'Wangdachui':4000, 'NiuYun':8000, 'Ming':3300}
>>> aInfo.update(bInfo)
>>> aInfo
{'Ming': 3300, 'NiuYun': 8000, 'Tianqi': 8000, 'Wangdachui': 4000, 'LinLing': 4500}

7)删除字典
>>> aStock = {'AXP':86.40, 'BA':122.64}
>>> bStock = aStock
>>> aStock = {}
>>> bStock
{'BA': 122.64, 'AXP': 86.4}
>>> aStock
{}

>>> cStock = {'A':86.4, 'B':124.3}
>>> dStock = cStock
>>> dStock
{'A': 86.4, 'B': 124.3}
>>> cStock.clear()
>>> print(cStock)
{}
>>> print(dStock)
{}

8)集合里面的常用的内置函数主要用作判断差,补,类似运算符<,>,|,&
>>> aSet = set('sunrise')
>>> bSet = set('sunset')
>>> aSet.issubset(bSet)
False
>>> aSet.intersection(bSet)
{'u', 'n', 's', 'e'}
>>> aSet.difference(bSet)
{'i', 'r'}

9)找到两个字典的相同的内容
>>> d1 = {'aa':100, 'bb':200, 'cc':300}
>>> d2 = {'cc':300, 'dd':400}
>>> set(d1.items())&set(d2.items())
{('cc', 300)}
>>> new_d1_d2 = dict(set(d1.items())&set(d2.items()))
>>> new_d1_d2
{'cc': 300}

猜你喜欢

转载自blog.csdn.net/zhaocen_1230/article/details/81741250