序列 —— 列表

这篇博客详细介绍了Python中的序列,特别是列表。内容包括序列的基本概念、列表的创建、列表切片、序列的通用操作如加法、乘法、成员运算符,以及如何修改和遍历列表。还探讨了range()函数创建自然数序列,并给出了几个练习题供读者实践。

Python 学习笔记


一、序列


1.1、什么是序列 ?

序列是 Python 中最基本的一种数据结构。数据结构是指计算机中数据存储的方式。
向序列添加数据,序列会安装添加顺序给予编号(0,1,2 …),而这些编号称之为 ‘索引’,且从 0 开始记录。
所以,序列也可以理解为一个按照索引排序的有序队列。


1.2、序列的分类

  • 可变序列
    即,序列当中的元素可以改变。如:列表(list)
  • 不可变序列
    即,序列当中的元素不可以改变。如:字符串(str)、元组(tuple)



二、列表的创建

对象(object) 就是内存中用来存储数据的一块区域。
列表 也是 Python 中的一个对象,可以保存多个有序的数据。
列表当中存储的数据,我们称之为 元素


列表的创建

可以通过:列表名 = [] 来创建一个空的列表。如:list = []
列表可以存放多个 任意类型 数据,每个元素用 , 隔开。如:list = [1,'python',None,True,[1,2,3]]
可以通过 索引 取出列表的元素:

#  索引是从0开始. 列表第一个位置就是 0, 第二个是 1, 以此类推
#  索引值可以为负数, 此时索引从 -1 开始, 从后往前获取元素

list = [1,'python',None,True,[1,2,3]]
print(list[1])									#  python
print(list[-1])									#  [1,2,3]

#  获取列表的长度(列表中元素的个数) len()
#  获取长度 其实就是, 列表的最大索引值 + 1

print( len(list) )



三、列表切片


切片: 指从现有类别,获取一个子列表(某几个连续的元素)。
语法: 列表 [ 起始位置索引 : 结束位置索引 ]

#  通过切片获取元素,会包括起始位置的元素,不会包括结束位置的元素
#  做切片时,总会返回一个新的列表,不会影响原来的列表

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


#  起始位置和结束的位置的索引是可以不写的

#  1、如果省略结束位置,则会一直截取到最后
print( hero[1:] )

#  2、如果省略开始位置,则会从第一个元素开始截取到结束位置(不包括)
print( hero[:3] )

#  3、如果开始位置和结束位置都不写,则会从第一个元素截取到最后
print( hero[:] )

语法增加 '步长’

步长: 表示获取元素的间隔,默认值是 1(可省略)。也可以看作是从当前元素向后“走几步”,
如:步长为 1,就是向后走 1 步,到达下一个索引;
步长为 2,就是向后走 2 步,间隔一个索引到达下下个索引。
语法:列表 [ 起始 : 结束 : 步长 ]

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

#  步长可以是负数,但是不能为 0
#  如果是负数, 则会从列表的后部向前取元素
print( hero[::-1] )

hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']
print(hero[:1:-1])							# 若只规定一边范围, 则从所定边开始倒数
print(hero[3::-1])
print(hero[1:3:2])							# 若规定两边, 则从小到大用正数, 从大到小用负数
print(hero[3:1:-1])  						# 可自行尝试, 观察效果



四、序列的通用操作

通用操作: 指列表、元组、字符串等所有序列都可以使用的操作。


4.1、’ + ’ 和 ’ * '

#  + 可以将两个列表拼接成一个列表

my_list = [1,2,3] + [4,5,6]
print(my_list)


#  * 可以将列表重复指定的次数

my_list = [1,2,3] * 2
print(my_list)

4.2、in 和 not in

#  in 用来检查指定元素是否在列表当中, 如果在返回 True , 不在返回 False
#  not in 用来检查指定元素是否不在列表当中, 如果不在返回 True , 在返回 False

hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']
print('钢铁侠' not in hero)

4.3、min() 和 max()

  • min() 获取列表当中最小值
  • max() 获取列表当中最大值
arr = [10,2,4,5,6,333]
print( min(arr) , max(arr) )

方法和函数,方法和函数基本上是一样的。我们可以说方法是特殊的函数。
方法必须和对象联系在一起 对象.方法() 形式来调用,如:s.index()

#  s.index() 获取指定元素在列表当中的位置(索引)

hero = ('钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长')
print(hero.index('蜘蛛侠'))


# s.count() 统计指定元素在列表当中出的次数

hero = ('钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长','蜘蛛侠','蜘蛛侠','蜘蛛侠','蜘蛛侠')
print(hero.count('蜘蛛侠'))
print(hero.count('灭霸'))



五、修改列表


5.1、修改列表元素

hero = ('钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长')
print('修改前',hero)


#  通过赋值来修改元素

hero[1] = '雷神'
print('修改后',hero)


#  通过切片来修改元素

hero[0:2] = ['黑豹']							# 给切片进行赋值时,必须传递的是一个序列.该序列会代替原切片的元素
print('修改后',hero)

hero[0:0] = ['雷神']							# 向多因为 0 的位置插入元素, 其他元素向后移动一位
print('修改后',hero)

hero[::2] = ['黑豹','雷神','灭霸']			# 若设置了步长,序列与切片中的元素个数必须一致
print('修改后',hero)

5.2、删除列表元素

#  通过切片来删除元素

del hero[0:2]
print('修改后',hero)

del hero[::2]
print('修改后',hero)

hero[1:3] = []
print('修改后',hero)


#  若想修改字符串, 可以, 但需先转为列表

s = 'python'
s = list(s)
s[1] = 'j'
print('修改后',s)

5.3、更多操作,可在官方文案查看
https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range




六、列表的方法


6.1、向列表添加元素

hero = ['钢铁侠','绿巨人','蜘蛛侠']
print('修改前',hero)

# append()  								# 向列表最后添加一个元素

hero.append('黑寡妇')
print('修改后',hero)

# extend()									# 向列表最后添加多个元素, 使用新的序列来扩展当前的序列
											# 需要一个序列做我参数,它会将该序列当中的元素添加到列表当中
hero.extend(['黑寡妇','蚁人'])				# extend 相当于如下:
hero += ['黑寡妇','蚁人']
print('修改后',hero)

# insert()									# 向列表指定位置插入一个元素
											# 需 2 个参数: 1.要插入的位置 , 2.要插入的元素
hero.insert(2,'黑寡妇')

6.2、删除列表元素

hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长','黑寡妇']

# s.pop()									# 删除指定的索引元素, 如果不传递索引值删除的是列表最后一个元素

result = hero.pop() 						# 默认删除最后元素
print(result)								# 有返回值
print('修改后',hero)

result = hero.pop(2) 						# 删除索引为 2 的元素
print(result)
print('修改后',hero)


# s.remove() 								# 删除指定的元素

result = hero.remove('绿巨人')				# 相同值的元素有多个,只会删除第一个
print(result)								# 没有返回值
print('修改后',hero)

6.3、列表中元素的排序

# sort() 									# 用来对列表当中的元素进行排序, 默认是升序

lst = list('asggerghuh')
print('修改前',lst)

lst.sort()
print('修改后',lst)

lst.sort(reverse=True)						# reverse() 用来反转列表
print('修改后',lst)



七、遍历列表

遍历列表: 指的就是从列表当中的元素提取出来。


7.1、通过 while 循环来遍历元素

# 创建一个循环 打印结果

hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']

i = 0
while i < len(hero):
    print(hero[i])
    i += 1

7.2、过for循环来遍历元素

语法:语法 for 变量 in 序列: 代码块

# for循环的代码块会执行多少次,取决于列表当中有多少个元素
# 每执行一次就会将序列中的一个元素赋值给变量
# 所以我们可以通过变量来获取列表当中的元素

hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']

for s in hero:
    print(s)



八、range( ) 创建一个自然数序列

# range(start, stop, step)
# start 开始 默认是从0开始 例如 range(5) = range(0,5)
# stop  结束 不包括结束 例如 range(0,5) 是 [0, 1, 2, 3, 4], 没有5
# step  步长 默认为 1.  range(5) = range(0,5) = range(0,5,1)

r = range(0,30,5) 
print(list(r))



九、练习


练习 1: 获取一个列表当中的奇数

lst = [1,2,3,4,5,6,7,8,9]

for i in range(0,9,2):
    print(lst[i])

练习 2: 找出100以内能够被3整除的数

# 第一种实现方式

# 用来接收所有可以被3整除的数
lst = []

for i in range(1,101):

    if i % 3 == 0:							# 判断 100以内能够被3整除的数
        lst.append(i)
        
print(lst)


# 第二种方式

print(list(range(3,101,3)))

练习 3: 需求 a = [1,2,3,4,5,6] 不通过函数来实现列表的反转,并写出推到过程。
考点: 对列表 切片的另一种操作 1 + 1 =2

# 第 1 步, 得出结果:

>>> a[::-1]
 [6, 5, 4, 3, 2, 1]

# 第 2 步, 推到过程:

>>> a[0:4]									# 切片
 [1, 2, 3, 4]

>>> a[0:4:1]								# 加上步长, 默认为 1 
 [1, 2, 3, 4]

>>> a[0:4:2]								# 步长为 2 
 [1, 3]

# 以上操作都是从左往右读取元素, 步长位负数就是从右往左读取元素

>>> a[4:1:-1]								# 步长为 负数
 [5, 4, 3]

>>> a[::-1]									# 不使用切片, 省略开始索引, 省略结束索引, 得出列表反转.
 [6, 5, 4, 3, 2, 1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值