python中列表和切片的讲解

列表

列表(list)
列表是Python中的一个对象
对象(object)就是内存中专门用来存储数据的一块区域
之前我们学习的对象,像数值,它只能保存一个单一的数据
列表中可以保持多个有序的数据
列表是用来存储对象的对象
#创建列表,通过[]来创建列表
my_list = [] #创建了一个空列表
print(my_list,type(my_list))
#一个列表中可以存储多个元素,也可以在创建列表时,来指定列表中的元素
my_list = [20] # 创建一个只包含一个元素的列表
#当向列表中添加多个元素时,多个元素之间使用,隔开
my_list = [10,20,30,40,50] #创建了一个包含5个元素的列表
#列表中可以保存任意的对象(数值,字符串,布尔值,空值,列表,函数等)
my_lst = [10,'hello',True,None,[1,2,3],print]
#列表中的对象都会按照插入的顺序存储到列表中,
#第一个插入的对象保存到第一个为止,第二个保存到第二个位置
#我们可以通过索引(index)来获取列表中的元素
#索引是从0开始的整数,列表第一个位置的索引为0,第二个位置索引为1,依次类推
my_list = [10,20,30,40,50]
#通过索引获取列表中的元素
#语法:my_list[索引] 
print(my_list[0])
print(my_list[4])
#如果使用的索引超过了最大的范围,会抛出异常
print(my_list[5])  # IndexError: list index out of range
#获取列表的长度,即列表中元素的个数
#len()函数,通过该函数可以获取列表的长度
#获取到的长度的值,是列表的最大索引 + 1
print(len(my_list))

切片

#切片指从现有列表中,获取一个子列表
stus = ['孙悟空','猪八戒','沙和尚','唐僧','蜘蛛精','白骨精']
#列表的索引可以是负数
#如果索引是负数,则从后向前获取元素,-1表示倒数第一个,-2表示倒数第二个 以此类推
print(stus[-2])
#通过切片来获取指定的元素
#语法:列表[起始:结束]
#通过切片获取元素时,会包括起始位置的元素,不包括结束位置的元素
#做切片操作时,总会返回一个新的列表,不会影响原来的列表
#起始和结束位置的索引都可以省略不写
#如果省略结束位置,则会一直截取到最后
#如果省略起始位置,则会从第一个元素开始截取
#如果起始和结束位置的索引全部省略,则相当于创建了一个完整的列表副本
print(stus[1:4])
print(stus[1:])
print(stus[:3])
print(stus[:])
#语法:列表[起始:结束:步长]
#步长表示 每次获取元素的间隔,默认值是1
print(stus[0:5:3])
#步长不能是0,但是可以是负数
#print(stus[::0])   #ValueError: slice step cannot be zero
#如果是负数,则会从列表的后部向前边取元素,生成一个倒序的列表
print(stus[::-1])

列表中的通用操作

# + 和 *
# +可以将两个列表拼接为一个列表
my_list=[1,2,3] + [4,5,6]
# *可以将列表重复指定的次数
my_list=[1,2,3] * 5
#print(my_list)
#创建一个列表
stus = ['孙悟空','猪八戒','沙和尚','唐僧','蜘蛛精','白骨精']
# in 和 not in

# in 用于检查指定元素是否存在于列表中
#    如果存在,返回True,否则返回False
print('沙和尚' in stus)
# not in用来检查指定元素是否不在列表中
# 如果不在,返回True,否则返回False
print('牛魔王' not in stus)
# len()获取列表中的元素个数

#min()获取列表中的最小值
#max()获取列表中的最大值
arr = [10,1,2,5,100,7]
#print(min(arr),max(arr))
#如果是对字符串操作min和max函数 则按照对应的Unicode编码来。
#index()
#count()
#两个方法(method),方法和函数基本是一样,只不过方法必须通过,对象.方法()的形式调用。
#xxx.print()方法实际上就是和对象关系紧密的函数。
#s.index() 获取指定元素在列表中的索引。
#print(stus.index('沙和尚'))
#如果要获取的列表中没有的元素,会抛出异常
print(stus.index('牛魔王')) #ValueError: slice step cannot be zero
#s.count()  #统计指定的元素在列表中出现的次数
print(stus.count('牛魔王'))

什么是序列

序列是Python中最基本的一种数据结构
数据结构指计算机中数据存储的方式
序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)
  并且序列中的数据会按照添加的顺序来分配索引
- 序列的分类: 
    可变序列(序列中的元素可以改变):
    	>列表(list)
    不可变序列(序列中的元素不可以改变):
		>字符串(str)
		>元组(tuple)

修改列表

# 创建一个列表
stus = ['孙悟空', '猪八戒', '沙和尚', '唐僧', '蜘蛛精', '白骨精']
print("修改前:",stus)
#修改列表中的元素
#直接通过索引来修改元素
stus[0] = 'sunwukong'
stus[2] = '哈哈'
#通过del来删除元素
del stus[2] #删除索引为2的元素
#print('修改后:',stus)
stus = ['孙悟空', '猪八戒', '沙和尚', '唐僧', '蜘蛛精', '白骨精']
print('修改前:',stus)
#通过切片来修改列表
#在给切片进行赋值时,只能使用序列
#stus[0:2] = ['牛魔王','红孩儿'] #使用新的元素替换旧的元素
#stus[0:2] = ['牛魔王','红孩儿','二郎神'] 
#stus[0:2] = ['牛魔王'] #向索引为0的位置插入元素
#当设置了步长时,序列中的元素个数必须和切片中的元素的个数一致
#stus[:2] = ['牛魔王','红孩儿','二郎神'] 
#stus[0:2] = 'swk' #还可以这样将字符串赋值给切片,'swk' 会自动转为list,['s','w','k']
#通过切片来删除元素
#del stus[0:2]
#del stus[::2]
#stus[1:3] = []
#print('修改后:',stus)

#以上操作,只适用于可变序列

s='hello'
#s[1] = 'a' 不可变序列,无法通过索引来修改
#可以先通过list()转为list
s = list(s)
print(s)

列表的方法

stus = ['孙悟空', '猪八戒', '沙和尚', '唐僧']
print('原列表:',stus)
#append()
#向列表的最后添加一个元素
#stus.append('唐僧')
#insert()
#向列表的指定位置插入一个元素
#参数
# 1.要插入的位置
# 2.要插入的元素
#stus.insert(2,'唐僧')
#extend()
#使用新的序列来扩展当前序列
#需要一个序列作为参数,它会将该序列中的元素添加到当前列表中
#stus.extend(['唐僧', '白骨精'])
#stus += ['唐僧', '白骨精']
#clear()
#清空序列
#stus.clear()
#pop()
#根据索引删除并返回被删除的元素
#result = stus.pop(2) #删除索引为2的元素
result = stus.pop() #删除最后一个
print('result=',result)
#remove
#删除指定值的元素,如果相同值的元素有多个,只会删除第一个
stus.remove('猪八戒')
#reverse()
#用来反转列表
stus.reverse()
#通过for循环来遍历列表
#语法:
     for 变量 in 序列:
     	 代码块
# for循环的代码块会执行多次,序列中有多个元素就会执行多次。
# 每执行一次就会将序列中的一个元素赋值给变量。
for s in stus:
    print(s)

猜你喜欢

转载自blog.csdn.net/adminstate/article/details/131019255
今日推荐