第7讲 python 列表详解

序列

序列的分类:

a、可变序列  列表。 
b、不可变序列 str  元素

1、列表list

有序的、可重复的 可嵌套、迭代(可以for循环)、修改、分片
列表的作用,列表可以保存多个有序的数据
列表的创建,我们可以通过[]来创建空的列表
列表存储的数据,我们称之为元素,一个列表可以存多个数据,每个数据(元素)可以用逗号(,)隔开
列表可以保存任意对象,通过索引(index)来获取列表中的元素,索引从0开始,列表第一个位置是0,第二个位置是1 …

lst = [10,20,30,40,50]
print(lst[0]) = 10
如果超出最大索引值就会报错

len()函数,获取列表的长度(列表中元素的个数)
获取到列表的长度值,是列表最大索引值+1
len(lst)
列表的索引值可以为负数,如果索引值为负数,则从后面向前获取元素,-1表示倒数第一个,-1倒数第二个,。。。
lst[-1] = 50; lst[-2] = 40

删除列表:del lst[0] ; lst.remove(‘a’) 按值删除; lst.pop(0)按索引删除 ;

2、列表切片

从现有列表获取一个子列表
hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’,‘黑寡妇’,‘蚁人’,‘美国队长’]
通过切片来获取列表中指定的元素
语法:列表[起始:结束]
通过切片获取元素的时候,会包括起始位置的元素,但是不会包括结束位置的元素

起始位置 和 结束位置可不可以不写呢?
如果省略结束位置,则会从当前的位置一直截取到最后
如果省略开始位置,则会从第一个元素截取到结束的元素,但是不包括结束的元素
如果开始和结束位置都省略,则会从第一个元素开始截取到最后
hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’,‘黑寡妇’,‘蚁人’,‘美国队长’]
print(hero[3:])
[‘黑寡妇’, ‘蚁人’, ‘美国队长’]
print(hero[:3])
[‘钢铁侠’, ‘绿巨人’, ‘蜘蛛侠’]
print(hero[:])
[‘钢铁侠’, ‘绿巨人’, ‘蜘蛛侠’, ‘黑寡妇’, ‘蚁人’, ‘美国队长’]
步长:语法 列表[起始:结束:步长]
步长表示,每次获取元素的间隔,默认值是1(可以省略不写)
步长不能为0,
步长可以是负数,如果是负数,则会向列表的后部向前边获取元素
print(hero[0:5:1])
[‘钢铁侠’, ‘绿巨人’, ‘蜘蛛侠’, ‘黑寡妇’, ‘蚁人’]
print(hero[0:5:2])
[‘钢铁侠’, ‘蜘蛛侠’, ‘蚁人’]
print(hero[::-1])
[‘美国队长’, ‘蚁人’, ‘黑寡妇’, ‘蜘蛛侠’, ‘绿巨人’, ‘钢铁侠’]
print(hero[::-2])
[‘美国队长’, ‘黑寡妇’, ‘绿巨人’]

3、通用操作

  • 和 *
  • 可以将两个列表拼接成一个列表
    mylist = [1,2,3] + [4,5,6]
    print(mylist) = [1, 2, 3, 4, 5, 6]
  • 可以将列表重复指定的次数
    mylist = [1,2,3] * 2
    print(mylist) = [1,2,3,1,2,3]

in 和 not in
in 用来检查指定元素是否在列表当中,如果在返回True,如果不在返回False
not in 用来检查指定元素是否不在列表当中,如果不在返回True,如果在返回False
hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’,‘黑寡妇’,‘蚁人’,‘美国队长’]
print(‘绿巨人’ in hero) = True
print(‘葫芦娃’ not in hero) = True

min() 和 max()
min()函数是获取列表当中的最小值
max()函数是获取列表中的最大值
a = [10,2,3,4,55,a,z]
print(min(a),max(a)) = 2 , 55
len(hero) = 6
s.index() 获取指定元素在列表当中的位置
s.count() 统计指定元素在列表中出现的次数
print(hero.index(‘蜘蛛侠’)) = 2
hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’,‘黑寡妇’,‘蚁人’,‘美国队长’,‘蜘蛛侠’,‘蜘蛛侠’,‘蜘蛛侠’]
print(hero.count(‘蜘蛛侠’)) = 4

4、修改列表

hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’,‘黑寡妇’,‘蚁人’,‘美国队长’]
hero[2] = [‘雷神’]
print(hero)
[‘钢铁侠’, ‘绿巨人’, ‘雷神’, ‘黑寡妇’, ‘蚁人’, ‘美国队长’]

hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’,‘黑寡妇’,‘蚁人’,‘美国队长’]
del hero[2]
print(hero)
[‘钢铁侠’, ‘绿巨人’, ‘黑寡妇’, ‘蚁人’, ‘美国队长’]

通过切片修改元素,给切片进行赋值的时候,必须传递一个序列
hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’,‘黑寡妇’,‘蚁人’,‘美国队长’]
hero[0:3] = 1,2,3,4
print(hero) = [1, 2, 3, 4, ‘黑寡妇’, ‘蚁人’, ‘美国队长’]
hero[0:3] = 123 报错

hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’,‘黑寡妇’,‘蚁人’,‘美国队长’]
hero[0:2] = [‘黑豹’,‘灭霸’,‘雷神’]
print(hero) = [‘黑豹’,‘灭霸’,‘雷神’,‘蜘蛛侠’,‘黑寡妇’,‘蚁人’,‘美国队长’]

hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’,‘黑寡妇’,‘蚁人’,‘美国队长’]
print(hero[0:0]) = []
#向索引为0的位置插入元素
hero[0:0]=[‘雷神’]
print(hero) = [‘雷神’, ‘钢铁侠’, ‘绿巨人’, ‘蜘蛛侠’, ‘黑寡妇’, ‘蚁人’, ‘美国队长’]

#当设置了步长,序列中元素的个数必须和切片中的元素的个数保持一致
hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’,‘黑寡妇’,‘蚁人’,‘美国队长’]
hero[::2]=[‘雷神’,‘黑豹’,‘灭霸’]
print(hero) = [‘雷神’, ‘绿巨人’, ‘黑豹’, ‘黑寡妇’, ‘灭霸’, ‘美国队长’]

hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’,‘黑寡妇’,‘蚁人’,‘美国队长’]
del hero[0:2]
print(hero) = [‘蜘蛛侠’, ‘黑寡妇’, ‘蚁人’, ‘美国队长’]

hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’,‘黑寡妇’,‘蚁人’,‘美国队长’]
del hero[::2]
print(hero) = [‘绿巨人’, ‘黑寡妇’, ‘美国队长’]

hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’,‘黑寡妇’,‘蚁人’,‘美国队长’]
hero[1:3] = []
print(hero) = [‘钢铁侠’, ‘黑寡妇’, ‘蚁人’, ‘美国队长’]

#强制类型转换
s = ‘python’
s = list[s]
s = s[1] = ‘j’
print(hero) = [‘p’, ‘j’, ‘t’, ‘h’, ‘o’, ‘n’]

5、列表的方法

5.1 s.append() 向列表的最后添加一个元素

hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’]
hero.append(‘黑寡妇’)
print(hero) = [‘钢铁侠’, ‘绿巨人’, ‘蜘蛛侠’, ‘黑寡妇’]

5.2 s.insert() 向列表指定的位置插入一个元素,参数1.要插入的位置 参数2.要插入的元素

hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’]
hero.insert(2,‘黑寡妇’)
print(hero) = [‘钢铁侠’, ‘绿巨人’, ‘黑寡妇’, ‘蜘蛛侠’]

5.3 s.extend() 使用新的序列来扩展当前序列

#需要一个序列作为参数,他会将该序列的元素添加到当前序列当中
hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’]
hero.extend([‘黑寡妇’,‘蚁人’])
heor += [‘黑寡妇’,‘蚁人’]
print(hero) = [‘钢铁侠’, ‘绿巨人’, ‘黑寡妇’, ‘蜘蛛侠’]

5.4 cleat() 清空列表

hero.clear()
hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’]
print(hero) = []

5.5 s.pop() 根据索引值,删除并返回指定的元素,如果不传索引值,删除最后一个元素

hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’]
result = hero.pop(1)
print(hero) = [‘钢铁侠’, ‘蜘蛛侠’]
print(result) = ‘绿巨人’

5.6 s.remove() 删除指定值的元素,没有返回值

hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’]
hero.remove(‘绿巨人’)
print(hero) = [‘钢铁侠’, ‘蜘蛛侠’]

5.7 s.reverse() 用来反转列表

hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’]
hero.reverse()
print(hero) = [‘蜘蛛侠’, ‘绿巨人’, ‘钢铁侠’]

5.8 s.sort() 可以用来对列表中的元素进行排序

my_list = list(‘axlirt’)
my_list.sort()
print(my_list) = [‘a’, ‘i’, ‘l’, ‘r’, ‘t’, ‘x’]

s.sort(reverse= True) 对列表进行反向排序

my_list = list(‘axlirt’)
my_list.sort(reverse= True)
print(my_list) = [‘x’, ‘t’, ‘r’, ‘l’, ‘i’, ‘a’]

6、遍历列表

指的是将列表当中的元素取出来
hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’,‘黑寡妇’]
i = 0
while i < len(hero):
print(hero[i])
i += 1

一般情况下我们是不通过while循环来遍历列表中的元素,通常使用for循环
语法:for 变量 in 序列(遍历的规则):
代码块
每执行一次就会将序列当中的一个元素赋值给变量
所以我们可以通过变量,来获取列表中的元素
hero = [‘钢铁侠’,‘绿巨人’,‘蜘蛛侠’,‘黑寡妇’]
for i in hero:
print(hero[i])

7、range() 函数,可以用来生成一个自然数的序列

start:开始 默认从0开始(0可以省略)
stop:结束 但是不包括结束 例如 range(0,5) [0,1,2,3,4] 没有5
step:步长 默认为1
如果我想让for循环中的代码块执行指定的次数,那么我就可以在range()函数里面的参数传递指定的次数
r = range(5) = range(0,5) = range(0,5,1)
print(list®) = [0,1,2,3,4]

r = range(5,0,-1)
print(list®) = [5,4,3,2,1]

r = range(0,10,3)
print(list®) = [0, 3, 6, 9]

8、练习

#获取列表中所有的奇数
lit = [1,2,3,4,5,6,7,8,9]
for i in range(0,9,2):
print(lit[i])

练习二,找出100以内所有可以被3整除的数
lst = []
for i in range(1,100):
#判断可以被3整除的数
if i % 3 == 0:
lst.append(i)
print(lst)

练习三,现在有一个列表,a = [1,2,3,4,5,6],那么现在的要求是不通过函数的形式让列表实现反转,并写出推到过程
a[::-1]
a[0:4] [1,2,3,4] 切片
a[0:4:1] [1,2,3,4] 加上步长
a[0:4:2] [1,3] 步长为2
#以上操作都是从左向右,步长为负数就是从右往左
a[4:1:-1] [5,4,3] 步长为负
a[::-1] [6,5,4,3,2,1] 不使用切片,省略开始结束值

发布了31 篇原创文章 · 获赞 0 · 访问量 363

猜你喜欢

转载自blog.csdn.net/weixin_38027481/article/details/102491954
今日推荐