Colin_Gu

导航

 

    序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字,也就是它的位置,或索引,其中,第一个索引是0,第二个索引是1,依此类推。

    序列都可以进行包括索引,切片,加,乘,检查成员等操作。本篇文章主要从以下3个方面举例解释。

a. 列表的索引,切片,步长;

b. 列表的常用操作(如:增,删,改,查,以及其他操作);

c. 列表的嵌套。

1.列表的索引,切片,步长

    创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

list1 = ['alex', 'Jenny', 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "d", "r", "o"];

与上一篇博客介绍字符串的索引一样,列表索引也是从0开始。列表可以进行切片、组合等。列表内部可以是多种数据类型的组合,先举一个例子,如例1:

1 li = ['colin', 27, True, [1, 2, 3], {'name': 'colin'}, (22, 33)]
2 print(li[0], type(li[0]))      # colin <class 'str'>
3 print(li[1], type(li[1]))      # 27 <class 'int'>
4 print(li[2], type(li[2]))      # True <class 'bool'>
5 print(li[3], type(li[3]))      # [1, 2, 3] <class 'list'>
6 print(li[4], type(li[4]))      # {'name': 'colin'} <class 'dict'>
7 print(li[5], type(li[5]))      # (22, 33) <class 'tuple'>

从上面代码可以发现,列表的内容可以是字符串,整型,布尔类型,列表,字典,元组等类型。

同时也可以对列表进行切片操作,为了方便,对上面的列表操作,如例2:

1 li = ['colin', 27, True, [1, 2, 3], {'name': 'colin'}, (22, 33)]
2 print(li[0])                  # colin
3 print(li[-1])                 # (22, 33)
4 print(li[1:3])                # [27, True]
5 print(li[:4])                 # ['colin', 27, True, [1, 2, 3]]
6 print(li[::2])                # ['colin', True, {'name': 'colin'}]
7 print(li[-1:-4:-2])           # [(22, 33), [1, 2, 3]]
8 print(li[-1:2:-2])            # [(22, 33), [1, 2, 3]]

2.列表的常用操作(如:增,删,改,查,以及其他操作)

   通常对列表增操作有3种方法:append(),insert(),extend();

   对列表的数据项进行修改或更新,通过使用append()方法来添加列表项,如下所示:

1 l1 = ['colin', 'zengsir',  '华女神', '小谢老师']
2 l1.append('小温老师')
3 print(l1.append('小温老师'))  # None
4 print(l1)                      # ['colin', 'zengsir', '华女神', '小谢老师', '小温老师', '小温老师']
5 l1.append([11, 22, 33])
6 print(l1)                     # ['colin', 'zengsir', '华女神', '小谢老师', '小温老师', '小温老师', [11, 22, 33]]

   将元素插入到指定的索引位置,使用insert():

1 l1 = ['colin', 'zengsir',  '华女神', '小谢老师']
2 l1.insert(0, 'xiaolin')    # 插入到指定索引位置
3 print(l1)                   # ['xiaolin', 'colin', 'zengsir', '华女神', '小谢老师']
4 l1.insert(-2, 'Jenny')
5 print(l1)                   # ['xiaolin', 'colin', 'zengsir', 'Jenny', '华女神', '小谢老师']

将插入的内容拆分成该成份的最小单元用extend()方法:

1 l1 = ['colin', 'zengsir',  '华女神', '小谢老师']
2 l1.extend('abc')  
3 print(l1)  # ['colin', 'zengsir', '华女神', '小谢老师', 'a', 'b', 'c']
4 l1.extend([111, 222, 333])
5 print(l1)   # ['colin', 'zengsir', '华女神', '小谢老师', 'a', 'b', 'c', 111, 222, 333]
6 l1.extend(['colin', 'Jenny'])
7 print(l1)  # ['colin', 'zengsir', '华女神', '小谢老师', 'a', 'b', 'c', 111, 222, 333, 'colin', 'Jenny']

 通常对列表删除操作作有4种方法:pop(),remove(),clear(),del():

按索引删除,但是有返回值,使用pop()操作:

1 l1 = ['colin', 'zengsir',  '华女神', '小谢老师']
2 ret = l1.pop(0)    # 按索引删除,但是有返回值
3 print(ret)         # 有返回值,返回值为:colin
4 print(l1)          # ['zengsir', '华女神', '小谢老师']

按照元素删除使用remove()操作:

1 l1 = ['colin', 'zengsir',  '华女神', '小谢老师']
2 l1.remove('华女神')
3 print(l1)      # 按照元素删除  ['colin', 'zengsir', '小谢老师']

清空列表但容器还在,使用clear():

1 l1 = ['colin', 'zengsir',  '华女神', '小谢老师']
2 l1.clear()      # 去清空列表,但是容器还在
3 print(l1)

del() 删除有三种操作方法

 1 l1 = ['colin', 'zengsir',  '华女神', '小谢老师']
 2 # 按照索引删除
 3 del l1[0]    #  ['zengsir', '华女神', '小谢老师']
 4 print(l1)
 5 # 可以按照切片去删除(可以加步长)
 6 del l1[::2]
 7 print(l1)    # ['华女神']
 8 # 可以在内存级别删除整个列表
 9 del l1
10 print(l1)     # 报错

 通常对列表改操作有两种方法:

1 . 按照索引改元素

2. 按照切片,或者切片+步长改元素

例题:

 1 l1 = ['alex', 'wusir', 'taibai', 'egon', '景女神', '文周老师', '日天老师']
 2 # 按索引去修改
 3 l1[2] = '男神'        
 4 l1[-1] = '泰迪'
 5 print(l1)    # ['alex', 'wusir', '男神', 'egon', '景女神', '文周老师', '泰迪']
 6 # 按照切片改
 7 l1[:2] = 'sbsbsb'    # 先清空位置,然后将内容添加到清空的区域
 8 print(l1)    # ['s', 'b', 's', 'b', 's', 'b', 'taibai', 'egon', '景女神', '文周老师', '日天老师']
 9 l1[:4] = [11, 22, 33, 44, 55, 66, 77]
10 print(l1)   # [11, 22, 33, 44, 55, 66, 77, '景女神', '文周老师', '日天老师']
11 # 按照切片+步长改
12 l1[:3:2] = 'af'
13 print(l1)  # ['a', 'wusir', 'f', 'egon', '景女神', '文周老师', '日天老师']

通常对列表查操作有两种方法:

1. 按索引,切片,切片+步长

2. for循环

1 l1 = ['alex', 'wusir', 'taibai', 'egon', '景女神', '文周老师', '日天老师']
2 for i in l1:
3     print(i)

其他方法(len(), count(), sort(), reverse()):

 1 l1 = ['alex', 'wusir', 'taibai', 'egon', '景女神', '文周老师', '日天老师']
 2 print(len(l1))   # 查询总个数   7
 3 print(l1.count('alex'))  # 查询某个元素出现的次数   1
 4 l2 = [5, 2, 6, 3, 1, 4, 7, 9]
 5 l2.sort()   # 从小到大排序    
 6 print(l2)    # [1, 2, 3, 4, 5, 6, 7, 9]
 7 l2.sort(reverse = True)  # 从小到大排序
 8 print(l2)     # [9, 7, 6, 5, 4, 3, 2, 1]
 9 l2.reverse()    # 整体翻转
10 print(l2)      [1, 2, 3, 4, 5, 6, 7, 9]

元组操作:

元组操作通常也有两类操作方法:

1, 索引,切片,切片+步长

2, for循环

1 # 索引,切片,切片+步长
2 info = ('colin', 100, True, [1, 2, 3], {'name':'Jenny'}, (22, 33))
3 print(info[0])    # 索引
4 print(info[:3])   # 切片
5 print(info[::2])  #切片+步长
1 # for 循环
2 info = ('colin', 100, True, [1, 2, 3], {'name':'Jenny'}, (22, 33))
3 for i in info:
4     print(i)
'''---应用场景:一些非常重要的数据,不允许所有人修改,所以放在元组中。---'''

 此外:

1 # info[3].append(666)     # ('colin', 100, True, [1, 2, 3, 666], {'name': 'Jenny'}, (22, 33))
2 # print(info)
3 # info.append(666)          # 报错
4 # print(info)
从上可以说明,元组本身是不能修改的,但是元组内部嵌套了列表,字典等是可以修改。

range()方法:

1 ''' --- range() 一般和for 循环结合使用------------'''
2 for i in range(1,11):
3     print(i)       # 1 2 3 4 5 6 7 8 9 10
4 ''' -----分隔--------'''
5 for i in range(1, 11, 2):
6     print(i)       # 1 3 5 7 9
7 '''-------逆序切片----------'''
8 for i in range(10, 1, -2):
9     print(i)       # 10 8 6 4 2

每日一练:

 1 '''-- 例:l3 = ['alex', 'wusir', ['taibai',99,'ritian'], 20] ---'''
 2 '''---------------找到alex的e元素。----------------------'''
 3 l3 = ['alex', 'wusir', ['taibai',99,'ritian'], 20]
 4 print(l3[0][2])
 5 '''---------------将wusir变成大写。----------------------------'''
 6 l3[1] = l3[1].upper()
 7 print(l3)
 8 '''---------------给此列表['taibai',99,'ritian'] 追加一个元素,'文周'---------'''
 9 l3[2].append('文周')
10 print(l3)
11 '''---------------将 'taibai' 首字母大写----------------------'''
12 l3[2][0] = l3[2][0].capitalize()
13 print(l3)
14 '''---------------将 99 通过数字加1 的方式变成100,并放回原处-----------'''
15 l3[2][1] = l3[2][1] + 1
16 print(l3)

 

posted on 2018-08-07 16:00  Colin_Gu  阅读(110)  评论(0编辑  收藏  举报