python入门(三)列表篇二

这篇博客主要涉及“操作列表”的相关知识。

其实熟悉C++11性质的朋友会知道一种容器的遍历方式:

vector<int> v(n);
for(auto &i : v) {
     ...... 
}

而在python中,对列表的遍历有着类似的手段:

t = ['1', '2', '3']
for num in t :
    print(num, end=" ")
# 1 2 3

关于数值列表的构建:

# range(a, b) range的构建从a开始,并在到达b停止,也就是说,不包括b值本身
for i in range(1, 4) :
    print(i, end=" ")
# 1 2 3

但需要注意的是:range函数是生成的一系列数字,而非一个列表

希望将range函数生成的数字序列转化为列表,可以使用函数list() 

num = list(range(1, 6))
print(num)
# [1, 2, 3, 4, 5]

而 range() 函数还可以指定步长:

# range(start, stop, step),从start开始,每次增加step,到达stop的时候结束
num = list(range(2, 11, 2))
print(num)
# [2, 4, 6, 8, 10]

有几个相关函数专门对数组列表进行处理:

digits = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(min(digits))
# 1
print(max(digits))
# 9
print(sum(digits))
# 45

列表解析:

s = [val ** 2 for val in range(1, 11)]
print(s)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# tip: 建立一个二维列表可以这么写
list = [[] for _ in range(1, 11)]
# 其中"_"表示python中的占位符,也就是说不再关心循环变量的具体值,只是用来控制循环次数

关于如何使用列表的一部分(切片):

其实切片的索引与range很类似,都可以理解为左闭右开的区间:

t = ['1', '2', '3', '4']
print(t[0:3])
# ['1', '2', '3']

print(t[1:4])
# ['2', '3', '4']

# 如果没有指定第一个索引,则默认从头开始
print(t[:3])
# ['1', '2', '3']

# 同样,可以默认截取到结尾
print(t[2:])
# ['3', '4']

# 这种规则对负的索引形式一样是成立的,如:打印最后三个数
print(t[-3:])
# ['2', '3', '4']

# 基于此,我们得到一种复制列表的方式
s = t[:]
print(s)
# ['1', '2', '3', '4']

注意!

复制列表不可以写成如下形式!

s = t

这在python的语法中表示将 s 关联到 t 的列表,而非创建一个 t 的副本,这样的话,改动 t 中的元素时,s 中的元素也会发生相同的变化

拓展(元组):

可以将元组理解为不可修改的列表,我们用小括号将其与列表的中括号做区分

s = ('1', '2')
print(s[1])
# 2

元组的遍历和切片与列表是类似的

虽然元组的元素不可修改,但其实我们可以给储存元组的变量重新赋值

s = ('1', '2')
print(s)

s = ('A', 'B')
print(s)

"""
('1', '2')
('A', 'B')
"""

基于此,可以与C语言中的 const 进行类似

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值