人生苦短,我选Pythonpython
前文传送门git
小白学 Python(1):开篇github
一说到列表切片不知道各位同窗有没有想起来前面咱们讲过的字符串切片,没想起来的同窗为本身的记忆默哀 3 秒钟吧。
开个玩笑:)能够返回去看看以前的文章。
列表切片是指将列表其中的一部分切出来。
语法: list[起始索引:终止索引:步长间隔]
注意: 这里的终止索引和字符串切片是同样的,并不会取到。
下面直接上代码,解析已经添加在注释中。
其实我就是懒,不想一条一条拆开写了,来打我呀~~~
list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 省略步长时默认为 1
print(list1[3:8])
# 步长为 2
print(list1[3:8:2])
# 从索引 3 开始取到最后
print(list1[3:])
# 从头开始取,取到索引 8 ,而且索引 8 娶不到
print(list1[:8])
# 取全部,步长为 3
print(list1[::3])
# 从索引 1 开始,取到倒数第 2 个,而且倒数第 2 个 取不到
print(list1[1:-2])
# 取全部
print(list1[:])
# 取逆序列表
print(list1[::-1])
# 取逆序,而且步长为 2
print(list1[8:1:-2])复制代码
执行结果以下:
[3, 4, 5, 6, 7]
[3, 5, 7]
[3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7]
[0, 3, 6, 9]
[1, 2, 3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
[8, 6, 4, 2]复制代码
咱们这里分别演示一下:
在列表末尾添加新的对象
list1.append("Python")
print(list1)复制代码
结果以下:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'Python']复制代码
统计某个元素在列表中出现的次数
list2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list2.append("Python")
list2.append("Python")
list2.append("Python")
list2.append(1)
print(list2.count("Python"))
print(list2.count(1))复制代码
结果以下:
3
2复制代码
咱们这里分别统计了字符串 "Python"
和数字 1
出现的次数。
在列表末尾一次性追加另外一个序列中的多个值(用新列表扩展原来的列表)
list1.extend(list2)
print(list1)复制代码
结果以下:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'Python', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'Python', 'Python', 'Python', 1]复制代码
能够看到 list1 在通过 list2 的扩展后,同时含有了 list1 和 list2 的全部数据。
extend 和 append 很是像,可是 extend 一次能够添加一个列表,而 append 一次只能添加一个元素。
从列表中找出某个值第一个匹配项的索引位置
print(list1.index("Python"))复制代码
结果以下:
10复制代码
将对象插入列表
index 是插入的索引值, obj 是要插入的元素。
list1.insert(0, "Hello")
print(list1)
list3 = [0, 1, 2]
list4 = [2, 2]
list3.insert(1, list4)
print(list3)复制代码
结果以下:
['Hello', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'Python', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'Python', 'Python', 'Python', 1]
[0, [2, 2], 1, 2]复制代码
固然插入时能够是一个单独的元素,也能够是一个列表。
移除列表中的一个元素(默认最后一个元素),而且返回该元素的值
list3.pop()
print(list3)
list3.pop(1)
print(list3)复制代码
结果以下:
[0, [2, 2], 1]
[0, 1]复制代码
一样在移除索引的时候,能够移除一个元素,也能够移除一个列表。
移除列表中某个值的第一个匹配项
list5 = [1, 2, 3, 4, 4, 5]
list5.remove(4)
print(list5)复制代码
结果以下:
[1, 2, 3, 4, 5]复制代码
反向列表中元素
list5.reverse()
print(list5)复制代码
结果以下:
[5, 4, 3, 2, 1]复制代码
虽然咱们刚才用步长为 -1 的形式一样作到了列表逆序,可是这两个操做是不同的。
list5 = [1, 2, 3, 4, 4, 5]
list5.remove(4)
print(list5)
print(id(list5))
list5.reverse()
print(list5)
print(id(list5))
print(id(list5[::-1]))复制代码
结果以下:
[1, 2, 3, 4, 5]
2629333420040
[5, 4, 3, 2, 1]
2629333420040
2629333420104复制代码
各位同窗看明白了,经过步长得到的逆序列表其实是一个新的列表,在内存的地址发生了变更,而经过 list.reverse()
打印的逆序列表仍是这个列表自己,它的内存地址并未发生改变。
对原列表进行排序
list6 = [2, 5, 1, 9, 6, 3]
list6.sort()
print(list6)
list6.sort(reverse=True)
print(list6)复制代码
结果以下:
[1, 2, 3, 5, 6, 9]
[9, 6, 5, 3, 2, 1]复制代码
怎么样,对列表进行正序和逆序排序是否是很简单。
后面还有两个方法 list.clear()
(清空列表) 和 list.copy()
(复制列表)我就不作演示,你们能够本身动手尝试一下,有不清楚的能够在公众号后台留言问我。
本系列的全部代码小编都会放在代码管理仓库 Github 和 Gitee 上,方便你们取用。