Python list列表---学习总结

列表是常用的数据类型,可以对数据进行存储和修改。

定义列表

1 >>> list_test = ['boduo','xiaoze','canglaoshi','jize','wutenglan']

打印输出列表

1 >>> print(list_test)
2 ['boduo', 'xiaoze', 'canglaoshi', 'jize', 'wutenglan']

通过下标访问列表中的元素,列表元素下标从0开始

 1 >>> list_test[0]
 2 'boduo'
 3 >>> list_test[3]
 4 'jize'
 5 >>> list_test[-1] #还能倒着取
 6 'wutenglan'
 7 >>> list_test[6] #当输入下标大于当前列表元素最大下标时,会报错
 8 Traceback (most recent call last):
 9   File "<pyshell#16>", line 1, in <module>
10     list_test[6] #当输入下标大于当前列表元素最大下标时,会报错
11 IndexError: list index out of range
12 >>> 

切片:切取多个元素

刚开始接触Python列表切片觉得很神奇,也很灵活,下面直接从使用规律总结一些经验

 1 list_test = ['boduo','xiaoze','canglaoshi','jize','wutenglan']
 2 
 3 print (list_test[0:3]) #截取第一位到第三位的字符
 4 print (list_test[:]) #截取字符串的全部字符
 5 print (list_test[2:]) #截取第二个字符到结尾
 6 print (list_test[:3]) #截取从开头到第三个字符
 7 print (list_test[:-3]) #截取从头开始到倒数第三个字符之前
 8 print (list_test[2]) #截取第三个字符
 9 print (list_test[-1]) #截取倒数第一个字符
10 print (list_test[::-1]) #创造一个与原字符串顺序相反的字符串
11 print (list_test[-3:-1]) #截取倒数第三位与倒数第一位之前的字符
12 print (list_test[-3:]) #截取倒数第三位到结尾
13 print (list_test[:-4:-2]) #逆序截取 

1、可见,列表有三个参数的下标有三个参数:beg(起始下标),end(终止下标), increase(递增量)

  当 increase小于0时,beg默认为len(array)-1,end默认为开头之前。

  当 increase大于0时,beg默认为0,end默认为最末之后。

  当 increase未给出时: increase默认为1。

2、可见,关于list_test[0:3]切片实际取值列表元素下标范围为0<=x<3,所以才会有截取第一为到第三位的字符,既列表元素下标为0,1,2的。

3、需要注意的是,列表切片产生的是列表的副本,与原列表不是同一份空间。

 1 >>> list_test = ['boduo','xiaoze','canglaoshi','jize','wutenglan']
 2 >>> list_sub = list_test[1,3] #注意这里的切片使用的是(:冒号)而不是(,逗号)自己懵逼了
 3 Traceback (most recent call last):
 4   File "<pyshell#85>", line 1, in <module>
 5     list_sub = list_test[1,3] #注意这里的切片使用的是(:冒号)而不是(,逗号)自己懵逼了
 6 TypeError: list indices must be integers or slices, not tuple
 7 >>> list_sub = list_test[1:3]
 8 >>> list_sub
 9 ['xiaoze', 'canglaoshi']
10 >>> 

4、未解决问题(个人感觉这个问题可能钻牛角尖了,过段时间再回看,也请观看的博友能指导下,不胜感激):

关于下面负索引切片该怎么理解呢

为什么第2行第4行输出的结果一样,但是到了第6行第8行就不一样了呢

 1  1 >>> list_test = ['boduo','xiaoze','canglaoshi','jize','wutenglan']
 2  2 >>> print (list_test[:])
 3  3 ['boduo', 'xiaoze', 'canglaoshi', 'jize', 'wutenglan']
 4  4 >>> print (list_test[-5:])
 5  5 ['boduo', 'xiaoze', 'canglaoshi', 'jize', 'wutenglan']
 6  6 >>> print (list_test[::-1])
 7  7 ['wutenglan', 'jize', 'canglaoshi', 'xiaoze', 'boduo']
 8  8 >>> print (list_test[-5::-1])
 9  9 ['boduo']
10 10 >>> 

 追加:

1 >>> list_test = ['boduo','xiaoze','canglaoshi','jize','wutenglan']
2 >>> list_test.append('woshixinlaide')
3 >>> list_test
4 ['boduo', 'xiaoze', 'canglaoshi', 'jize', 'wutenglan', 'woshixinlaide']
5 >>> list_test2=['woshixinlaide2','woshixinlaide3']
6 >>> list_test.append(list_test2)
7 >>> list_test
8 ['boduo', 'xiaoze', 'canglaoshi', 'jize', 'wutenglan', 'woshixinlaide', ['woshixinlaide2', 'woshixinlaide3']]
9 >>> 

1、这里面需要注意的是第5行第6行,定义一个列表list_test2使用.append追加到list_test中,list_test2列表在list_test中被视为一个元素。

插入:

 1 >>> list_test = ['boduo','xiaoze','canglaoshi','jize','wutenglan']
 2 >>> list_test
 3 ['boduo', 'xiaoze', 'canglaoshi', 'jize', 'wutenglan']
 4 >>> list_test.insert(2,'我是新来的')
 5 >>> list_test
 6 ['boduo', 'xiaoze', '我是新来的', 'canglaoshi', 'jize', 'wutenglan']
 7 >>> list_test2
 8 ['woshixinlaide2', 'woshixinlaide3']
 9 >>> list_test.insert(2,list_test2)
10 >>> list_test
11 ['boduo', 'xiaoze', ['woshixinlaide2', 'woshixinlaide3'], '我是新来的', 'canglaoshi', 'jize', 'wutenglan']
12 >>> list_test[2]
13 ['woshixinlaide2', 'woshixinlaide3']

1、观察第13行,往列表中插入的对象都视为目标列表中的一个元素

修改:

 1 >>> list_test
 2 ['boduo', 'xiaoze', ['woshixinlaide2', 'woshixinlaide3'], '我是新来的', 'canglaoshi', 'jize', 'wutenglan']
 3 >>> list_test[2]
 4 ['woshixinlaide2', 'woshixinlaide3']
 5 >>> list_test[3]
 6 '我是新来的'
 7 >>> list_test[3] = '我已经来了很久了'
 8 >>> list_test
 9 ['boduo', 'xiaoze', ['woshixinlaide2', 'woshixinlaide3'], '我已经来了很久了', 'canglaoshi', 'jize', 'wutenglan']
10 >>> 

删除:

 1 >>> list_test
 2 ['boduo', 'xiaoze', ['woshixinlaide2', 'woshixinlaide3'], '我已经来了很久了', 'canglaoshi', 'jize', 'wutenglan']
 3 >>> del list_test[2]  #删除指定下标的元素
 4 >>> list_test
 5 ['boduo', 'xiaoze', '我已经来了很久了', 'canglaoshi', 'jize', 'wutenglan']
 6 >>> list_test.remove('我已经来了很久了')  #删除指定元素
 7 >>> list_test
 8 ['boduo', 'xiaoze', 'canglaoshi', 'jize', 'wutenglan']
 9 >>> list_test.pop()  #删除列表最后一个元素,并返回该元素
10 'wutenglan'
11 >>> list_test
12 ['boduo', 'xiaoze', 'canglaoshi', 'jize']
13 >>> 

扩展:

 1 >>> list_test2
 2 ['woshixinlaide2', 'woshixinlaide3']
 3 >>> list_test
 4 ['boduo', 'xiaoze', 'canglaoshi', 'jize']
 5 >>> list_test.extend(list_test2)
 6 >>> list_test
 7 ['boduo', 'xiaoze', 'canglaoshi', 'jize', 'woshixinlaide2', 'woshixinlaide3']
 8 >>> list_test.extend('xiaoze')  #注意这个特例
 9 >>> list_test
10 ['boduo', 'xiaoze', 'canglaoshi', 'jize', 'woshixinlaide2', 'woshixinlaide3', 'x', 'i', 'a', 'o', 'z', 'e']
11 >>> list_test3 = [['C331',['C332','C333']],['B221','B222'],'A111'] #新建立多级嵌套列表
12 >>> list_test
13 ['boduo', 'xiaoze', 'canglaoshi', 'jize', 'woshixinlaide2', 'woshixinlaide3', 'x', 'i', 'a', 'o', 'z', 'e']
14 >>> list_test.extend(list_test3)
15 >>> list_test
16 ['boduo', 'xiaoze', 'canglaoshi', 'jize', 'woshixinlaide2', 'woshixinlaide3', 'x', 'i', 'a', 'o', 'z', 'e', ['C331', ['C332', 'C333']], ['B221', 'B222'], 'A111']
17 >>>

1、扩展列表list_test,注意list_test2也是一个列表,但使用extend扩展后,列表list_test2中的元素变成列表list_test中的元素

2、观察第8行特例,当插入一个字符串时,会拆成单个字母

3、观察第11行的列表list_test3结构并与第16行扩展到列表list_test的结构

4、可看出,使用列表扩展时会对添扩展内容进行一次细化切片,但只切取一次

拷贝:

拷贝将在后面重新开一个随笔。

统计:

1 >>> list_test
2 ['boduo', 'xiaoze', 'canglaoshi', 'jize', 'woshixinlaide2', 'woshixinlaide3', 'x', 'i', 'a', 'o', 'z', 'e', ['C331', ['C332', 'C333']], ['B221', 'B222'], 'A111']
3 >>> list_test.count('x')
4 1
5 >>> 

排序&翻转:

 1 >>> list_test4 = ['xiaoze','canglaoshi',11,22,33]
 2 >>> list_test4.sort()      #3.0开始Python不支持不用类型数据的排序
 3 Traceback (most recent call last):
 4   File "<pyshell#162>", line 1, in <module>
 5     list_test4.sort()
 6 TypeError: unorderable types: int() < str()
 7 >>> list_test4[2] = '33'
 8 >>> list_test4[3]='11'
 9 >>> list_test4[4]='22'
10 >>> list_test4
11 ['xiaoze', 'canglaoshi', '33', '11', '22']
12 >>> list_test4.sort()
13 >>> list_test4
14 ['11', '22', '33', 'canglaoshi', 'xiaoze']
15 >>> list_test4.reverse()  #翻转
16 >>> list_test4
17 ['xiaoze', 'canglaoshi', '33', '22', '11']
18 >>> 

获取下标:

1 >>> list_test4
2 ['xiaoze', 'canglaoshi', '33', '22', '11']
3 >>> list_test4.index('xiaoze')  #获取指定元素的下标
4 0
5 >>> 

猜你喜欢

转载自www.cnblogs.com/king-of-purple/p/9418408.html