python初级5列表

1. 序列(sequence)

1.1 基本概念

• 序列是Python中最基本的一种数据结构。序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)并且序列中的数据会按照添加的顺序来分配索引
• 数据结构指计算机中数据存储的方式(不同的存放数据的存放方式就是数据结构)
我们通过索引(index)来获取列表中的元素
索引是从0开始的
len()函数可以获得列表的长度或者元素的个数
获取列表的长度其实就是列表的最大索引值加+1
列表的索引可以是负数 -1最后一个 -2是倒数第二个 因此类推

1.2 序列的分类

• 可变序列(序列中的元素可以改变):例如 列表(list)字典(dict)
• 不可变序列(序列中的元素不能改变):例如 字符串(str)元组(tuple)

2. 列表(list)

• 列表是Python中的一个对象
• 列表的作用
• 列表中可以保存多个有序的数据
• 列表是用来存储对象的对象

2.1 列表的使用

• 列表的创建:通过[]来创建一个空列表

2.2 切片

• 切片是指从现有列表中获得一个子列表
• 通过切片来获取指定的元素
• 语法: 列表[起始 : 结束 : 步长]
• 通过切片获取元素时,会包括起始位置的元素,不会包括结束位置的元素
• 起始位置和结束位置的索引可以不写
• 如果省略结束位置, 则会从当前的开始位置一直截取到最后
• 如果省略开始位置, 则会从第一个元素截取到结束的元素,但是不包括结束的元素 (取左不取右)
• 如果开始位置和结束位置都省略, 则则会从第一个元素开始截取到最后一个元素 可以这样用切片创建副本 a 和c指向的不是同一对象

a=[1,2,3]
c=a[:]
print(c,id(c))
print(a,id(a))

[1, 2, 3] 37940224
[1, 2, 3] 37932800

• 步长表示每次获取元素的间隔,默认是1(可以省略不写)
• 步长不能是0,但可以是是负数 负数则会反向取 就变成了取右不取左了

我们做切片的时候总会返回一个新的列表,而不会影响原来的列表
在这里插入图片描述

a=[1,2,3,4,5,6,7,8]
c=a[2::4]
print(c)
print(a)

[3, 7]
[1, 2, 3, 4, 5, 6, 7, 8]

3. 通用操作

• + 和 *
• + 可以将两个列表拼接成一个列表
• * 可以将列表重复指定的次数 (注意2个列表不能够做乘法,要和整数做乘法运算)
• in 和 not in
• in用来检查指定元素是否在列表当中
• not in 用来检查指定元素是否不在列表当中
• len() 获取列表中元素的个数
• max() 获取列表中最大值
• min() 获取列表中最小值
• list.index(x[, start[, end]])
list.index(x,start,end)
• 第一个参数 获取指定元素在列表中的位置
• 第二个参数 表示查找的起始位置
• 第三个参数 表示查找的结束位置
在这里插入图片描述
• list.count(x) 统计指定元素在列表中出现的个数

4. 修改列表

1通过索引
hero[ 0 ]=‘11’
2通过del来删除元素
del hero [ 0 ]
3通过切片来修改(起始就是给切片的内容重新赋值,但是赋值的内容必须是一个序列) 很明显 1234它不是序列
在这里插入图片描述
【序列又分为1 可变序列(序列中的元素可以改变):例如 列表(list)字典(dict)
2 不可变序列(序列中的元素不能改变):例如 字符串(str)元组(tuple)】
3 当设置了步长时,序列中元素的个数必须和切片中元素的个数保持一致

o=['凯','伽罗','鲁班','孙悟空','孙策','孙悟空','不知火舞','5f']
o[2:5]='0123'
print(o)
D:\python\python.exe D:/LongProject/做作业.py
['凯', '伽罗', '0', '1', '2', '3', '孙悟空', '不知火舞', '5f']

Process finished with exit code 0

4向索引为零的位置插入一个元素

o=['凯','伽罗','鲁班','孙悟空','孙策','孙悟空','不知火舞','5f']
o[0:0]='0123'
print(o)
['0', '1', '2', '3', '凯', '伽罗', '鲁班', '孙悟空', '孙策', '孙悟空', '不知火舞', '5f']

5替换 当设置了步长,序列中元素的个数必须和切片中元素的个数保持一致 '0123’中 多一个少一个都会报错

o=['凯','伽罗','鲁班','孙悟空','孙策','孙悟空','不知火舞','5f']
o[::2]='0123'
print(o)
D:\python\python.exe D:/LongProject/做作业.py
['0', '伽罗', '1', '孙悟空', '2', '孙悟空', '3', '5f']

Process finished with exit code 0

6通过切片来删除元素
• del list[起始 : 结束]
• list = [ ]
当然以上切片索引只是适用于可变序列
比如

s='python'
s[1]='h'
print(s)

就会报错 字符串不是可变序列
如果非得改

s='python'
s=list(s)
s[1]='h'
print(s)

由此可见 这里
4. 修改列表 [ ] 中的参数用:隔开
5. 列表的方法 中()中参数用 , 隔开

5. 列表的方法

方法格式 就是 x.xxx()
1• append() 向列表的最后添加一个元素

o=['凯','伽罗','鲁班','孙悟空','孙策','孙悟空','不知火舞','5f']
o.append(22)
o.append('蒙恬')
print(o)
D:\python\python.exe D:/LongProject/做作业.py
['凯', '伽罗', '鲁班', '孙悟空', '孙策', '孙悟空', '不知火舞', '5f', 22, '蒙恬']

Process finished with exit code 0

2• insert(arg1,arg2) 向列表指定位置插入一个元素 参数1:要插入的位置 参数2:要插入的元素 (插入的元素在这个位置元素的后面

o=['凯','伽罗','鲁班','孙悟空','孙策','孙悟空','不知火舞','5f']
o.insert(2,2)
o.append('蒙恬')
print(o)
D:\python\python.exe D:/LongProject/做作业.py
['凯', '伽罗', 2, '鲁班', '孙悟空', '孙策', '孙悟空', '不知火舞', '5f', '蒙恬']

Process finished with exit code 0

3• extend(iterable) 使用一个新的序列来扩展当前序列(它会将该序列的中元素添加到列表中) 参数需要传递一个序列

o=['孙悟空','孙策','孙悟空','不知火舞']

o.extend([3556,432])
o.extend(['dssds'])
o.extend('sadsa')
print(o)
D:\python\python.exe D:/LongProject/做作业.py
['孙悟空', '孙策', '孙悟空', '不知火舞', 3556, 432, 'dssds', 's', 'a', 'd', 's', 'a']

Process finished with exit code 0

4clear( )清空集合

o=['孙悟空','孙策','孙悟空','不知火舞']
o.clear()
print(o)
D:\python\python.exe D:/LongProject/做作业.py
[]

Process finished with exit code 0

4• pop() 根据索引删除并返回指定元素(只能清空一个)
不传索引删除的是最后一个元素

o=['孙悟空','孙策','孙悟空','不知火舞']
o.pop()
print(o)
D:\python\python.exe D:/LongProject/做作业.py
['孙悟空', '孙策', '孙悟空']

Process finished with exit code 0

传的话就是该删哪个就删

o=['孙悟空','孙策','孙悟空','不知火舞']
o.pop(1)
print(o)
D:\python\python.exe D:/LongProject/做作业.py
['孙悟空', '孙悟空', '不知火舞']

Process finished with exit code 0

5• remove() 删除指定元素 (如果相同值的元素有多个,只会删除第一个)
6• reverse() 翻转列表
7• sort(key=None,reverse=False) 用来对列表中的元素进行排序 reverse:True反序;False 正序
默认是升序 首字母

o=['孙悟空','孙策','妲己','不知火舞']
o.sort()
print(o)
D:\python\python.exe D:/LongProject/做作业.py
['不知火舞', '妲己', '孙悟空', '孙策']

Process finished with exit code 0

要想降序的话

o=['孙悟空','孙策','大屁股','不知火舞']
o.sort(reverse=True)
print(o)
D:\python\python.exe D:/LongProject/做作业.py
['孙策', '孙悟空', '大屁股', '不知火舞']

Process finished with exit code 0

6. 遍历列表

指的就是将列表当中的元素取出来

o=['孙悟空','孙策','大屁股','不知火舞']
i=0
while i<3:
    print(o[i])
    #print(i)
    i+=1
    D:\python\python.exe D:/LongProject/做作业.py
孙悟空
孙策
大屁股

Process finished with exit code 0

此处关键是while i<3: 这里 因为列表里有4个元素 最大索引是3
当不知道列表元素多少时就完了
所以呢要用到 len()

o=['孙悟空','孙策','大屁股','不知火舞']
i=0
while i<len(o):
    print(o[i])
    #print(i)
    i+=1
   D:\python\python.exe D:/LongProject/做作业.py
孙悟空
孙策
大屁股
不知火舞
 

6.1 for循环

o=['孙悟空','孙策','大屁股','不知火舞']
for j in o:
    print(j)

D:\python\python.exe D:/LongProject/做作业.py
孙悟空
孙策
大屁股
不知火舞

• 通过for循环来遍历列表
语法
for 变量 in 序列(遍历的规则):
代码块
• 注意: for循环的代码块会执行多次,序列中有几个元素就会执行几次。每执行一次就会将序列中的一个元素赋值给变量(j),所以我们可以通过变量来获取列表中的元素

o=['孙悟空','孙策','大屁股','不知火舞']
for j in o:
    print(1)
D:\python\python.exe D:/LongProject/做作业.py
1
1
1
1

Process finished with exit code 0

6.2 range(start, stop[, step])

参数说明
• ·start: 计数从 start 开始。默认是从 0 (可以省略)开始。例如range(5)等价于range(0, 5);
• stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5

a=list(range(5))
print(a)
[0, 1, 2, 3, 4]

• step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1) 等价于range(5)


print(list(range(5)))
print(list(range(0,5)))
print(list(range(0,5,1)))
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]

迭代

在这里插入图片描述
在这里插入图片描述

查找列表中的奇数

a=[1,2,3,4,5,6,7,8,9]
for x in range(0,9,2):
        print([x])
[0]
[2]
[4]
[6]
[8]
a=[1,2,3,4,5,6,7,8,9]
for x in range(0,9,2):
        print(a[x])
1
3
5
7
9

这里的range(0,9,2)是 0 2 4 6 8 (指的是序列元素的位置) 对应的索引值就是 1 3 5 7 9
更方便的理解就是 此处必须是list

print(list(range(0,9,2)))
[0, 2, 4, 6, 8]

range() 光传5 就循环5次 根据列表元素而定

课堂复习环节

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值