python全栈开发《44.索引与切片之列表:什么是索引?什么是切片?》

1.什么是索引?

  • 1)都有哪些数据类型里有索引的概念?

字符串,列表和元组。

  • 2)从最左边记录的位置就是索引。

  • 3)索引用数字表示,起始从0开始。

832cd1c63581b8e489c4e105ebdb037f.png
  • 4)字符串,列表和元组的最大索引是它们的长度-1。

通过len函数获取到它们的长度,减1,就是它们的最大索引。

例1:

I = ['name']
print(I[0])

运行结果: name

例2:

I = ['name']
print(I[1])

运行结果:

/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/1.py 
Traceback (most recent call last):
  File "/Users/llq/PycharmProjects/pythonlearn/python_list/1.py", line 2, in <module>
    print(I[1])
IndexError: list index out of range

进程已结束,退出代码为 1

2.什么是切片?

  • 1)索引用来对单个元素进行访问,切片则对一定范围内的元素进行访问。

  • 2)切片通过冒号在中括号内把相隔的两个索引查找出来。

[0:10] 就是说,获取一个列表中从0到10的索引。

  • 3)切片规则:左含,右不含。

numbers = [1,2,3,4,5,6,7,8,9,10]
print(numbers[3:8])

运行结果: [4, 5, 6, 7, 8]

3.代码

例1:中括号内只打一个冒号,什么都不加,会返回这个列表完整的数据。

# coding:utf-8

numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers)-1)
print(numbers[9])

print(numbers[:])

运行结果:

/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/list_index.py 
9
10
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

进程已结束,退出代码为 0

[:]这个什么都没有填写,左边这个数值默认就是0,右边默认就是最大。

例2:另一种获取完整列表的方法。

# coding:utf-8

numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers)-1)
print(numbers[9])

print('获取列表完整数据:',numbers[:])
print('另一种获取完整列表的方法:',numbers[0:])

运行结果:

/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/list_index.py 
9
10
获取列表完整数据: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
另一种获取完整列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

进程已结束,退出代码为 0

例3:注意:通过切片的方式,获取到的这个列表,已经不是原来这个列表了。

即便通过[:]这个形式,获取到了完整的列表内容,它们两个是不同的。

# coding:utf-8

numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers)-1)
print(numbers[9])
print(id(numbers))

print('获取列表完整数据:',id(numbers[:]))
print('另一种获取完整列表的方法:',numbers[0:])
print('第三种获取列表的方法:',numbers[0:-1])

运行结果:

/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/list_index.py 
9
10
4314324160
获取列表完整数据: 4314324224
另一种获取完整列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
第三种获取列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9]

进程已结束,退出代码为 0

两个id地址是不同的,通过索引生成的这个列表,是一个新的变量值。而不是原有的列表。

例4:列表的反序。

# coding:utf-8

numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers)-1)
print(numbers[9])
print(id(numbers))

print('获取列表完整数据:',numbers[:])
print('另一种获取完整列表的方法:',numbers[0:])
print('第三种获取列表的方法:',numbers[0:-1])
print('列表的反序:',numbers[::-1])

运行结果:

/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/list_index.py 
9
10
4303166656
获取列表完整数据: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
另一种获取完整列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
第三种获取列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9]
列表的反序: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

进程已结束,退出代码为 0

例5:列表的反向获取。

# coding:utf-8

numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers)-1)
print(numbers[9])
print(id(numbers))

print('获取列表完整数据:',numbers[:])
print('另一种获取完整列表的方法:',numbers[0:])
print('第三种获取列表的方法:',numbers[0:-1])
print('列表的反序:',numbers[::-1])
print('列表的反向获取',numbers[-3:-1])

运行结果:

/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/list_index.py 
9
10
4381886976
获取列表完整数据: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
另一种获取完整列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
第三种获取列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9]
列表的反序: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
列表的反向获取 [8, 9]

进程已结束,退出代码为 0

例6:通过步长获取切片。设置每2个数值获取一次。

# coding:utf-8

numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers)-1)
print(numbers[9])
print(id(numbers))

print('获取列表完整数据:',numbers[:])
print('另一种获取完整列表的方法:',numbers[0:])
print('第三种获取列表的方法:',numbers[0:-1])
print('列表的反序:',numbers[::-1])
print('列表的反向获取',numbers[-3:-1])
print('步长获取切片',numbers[0:8:2])

运行结果:

/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/list_index.py 
9
10
4365737152
获取列表完整数据: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
另一种获取完整列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
第三种获取列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9]
列表的反序: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
列表的反向获取 [8, 9]
步长获取切片 [1, 3, 5, 7]

进程已结束,退出代码为 0

例7:生成一个新的空列表。

# coding:utf-8

numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers)-1)
print(numbers[9])
print(id(numbers))

print('获取列表完整数据:',numbers[:])
print('另一种获取完整列表的方法:',numbers[0:])
print('第三种获取列表的方法:',numbers[0:-1])
print('列表的反序:',numbers[::-1])
print('列表的反向获取:',numbers[-3:-1])
print('步长获取切片:',numbers[0:8:2])
print('切片生成空列表:',numbers[0:0])

运行结果:

/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/list_index.py 
9
10
4342570176
获取列表完整数据: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
另一种获取完整列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
第三种获取列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9]
列表的反序: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
列表的反向获取: [8, 9]
步长获取切片: [1, 3, 5, 7]
切片生成空列表: []

进程已结束,退出代码为 0

例8:也可以把这些索引赋给一个新的变量。

# coding:utf-8

numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers)-1)
print(numbers[9])
print(id(numbers))

print('获取列表完整数据:',numbers[:])
print('另一种获取完整列表的方法:',numbers[0:])
print('第三种获取列表的方法:',numbers[0:-1])
print('列表的反序:',numbers[::-1])
print('列表的反向获取:',numbers[-3:-1])
print('步长获取切片:',numbers[0:8:2])
print('切片生成空列表:',numbers[0:0])
new_numbers = numbers[:4]
print(new_numbers)

运行结果:

/Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_list/list_index.py 
9
10
4334918848
获取列表完整数据: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
另一种获取完整列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
第三种获取列表的方法: [1, 2, 3, 4, 5, 6, 7, 8, 9]
列表的反序: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
列表的反向获取: [8, 9]
步长获取切片: [1, 3, 5, 7]
切片生成空列表: []
[1, 2, 3, 4]

进程已结束,退出代码为 0

成功返回了这个新的列表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清菡软件测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值