栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python基础知识——3、操作列表

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python基础知识——3、操作列表

3、操作列表
  • for循环
    Python根据缩进来判断代码行与前一个代码行的关系。在for循环中,利用缩进表示代码块。for语句末尾的冒号告诉Python,下一行是循环的第一行。
bicycles = ['trek','cannondale','redline','specialized']

for bicycle in bicycles:
    print(bicycle)

输出:
trek
cannondale
redline
specialized

在for循环后,没有缩进的代码都只执行一次,不会重复执行。

  • range()函数
    生成一系列数,左闭右开,可用于for循环或者产生可迭代结构,如列表,调用有以下两种:
    range(stop:int), 从0产生一些列整数,到stop的前一个值处停止。
    range(start:int, stop:int, step:int), 从start开始,以step为步长,到stop的前一个数停止。如果步长太长,最后一个输出的数也绝不会超过stop的前一个数,如下面代码示例。
numbers = list(range(3))  # range(stop:int)
print(numbers)

enven_numbers = list(range(2,11,2)) #range(start:int, stop:int, step:int)
all_numbers = list(range(1,11,5))
print(enven_numbers)
print(all_numbers)

输出:
[0, 1, 2]
[2, 4, 6, 8, 10]
[1, 6]
  • 对数字列表执行简单的统计计算
    • min(iterable) : 取最小值
    • max (iterable) :取最大值
    • sum (iterable) : 取总和
digits = [1,2,3,4,5,6,7,8,9,0]

mi = min(digits)
ma = max(digits)
su = sum(digits)

print(f"mi = {mi}, ma = {ma}, su = {su}")

输出:
mi = 0, ma = 9, su = 45
  • 列表解析
    有时候我们需要创建复杂列表,如下面例子中的平方数列表,利用for循环有时显得不够简洁,列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。
#例一
squares = [value**2 for value in range(1,11)]  
print(squares)

#例二
fruits = ['apple', 'banana', 'watermelon']
upper_fruits = [fruit.title() for fruit in fruits]  #后半部分和for语句的开头完全相同
print(upper_fruits)

输出:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
['Apple', 'Banana', 'Watermelon']
  • 使用列表的一部分——切片
    要创建切片,可指定要使用的第一个元素和最后一个元素的索引。两个索引之间用冒号隔开。与函数range()一样,Python在到达第二个索引之前的元素后停止。由于是左闭右开,用第二个索引值减去第一个索引值,得到的结果就是这个切片包含的元素数量。
item = list(range(0,10,1))
print(item)

cut_item = item[1:6]  #取索引为1处(即第二个元素)到索引为5处(左闭右开)元素
print(cut_item)

输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5]

如果没有指定第一个索引,Python将自动从列表开头开始。如果没有指定第二个索引,切片将终止于列表末尾。在给末尾元素切片时,可使用负数索引。
可以在两个索引之后添加第三个参数作为步长,它可以告诉Python在指定范围内每隔多少个元素提取一个。

item = list(range(0,10,1))
print(item)

head_cut = item[:3]  #不设置第一个索引
print(head_cut,"-------------------item[:3]")

tail_cut = item[4:]  #不设置第二个索引
print(tail_cut,"--------------------item[4:]")

tail_cut2 = item[-3:]  #使用负数索引
print(tail_cut2,"--------------------item[-3:]")

step_cut = item[1:8:2]  #设置切片步长
no_step_cut = item[1:8] #不设置切片步长
print(no_step_cut,"-------------------item[1:8]")
print(step_cut,"---------------------item[1:8:2]")

输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2] -------------------item[:3]
[4, 5, 6, 7, 8, 9] --------------------item[4:]
[7, 8, 9] --------------------item[-3:]
[1, 2, 3, 4, 5, 6, 7] -------------------item[1:8]
[1, 3, 5, 7] ---------------------item[1:8:2]

遍历切片——如果要遍历切片中的部分元素,可以在for循环中使用切片。

item = list(range(0,10,1))
print(item)

for i in item[:4]:  #计算前四个数的平方根
    print(i**2)
    
输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0
1
4
9
  • 复制列表
    如果要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引( [:] )。这样Python就创建了一个起始于第一个元素、终止于最后一个元素的切片,即整个列表的副本。
    值得一提的是,如果我们将一个列表直接赋值给另一个列表,两个列表会指向同一个内存空间,当改变其中一个的值时,另一个列表的值也会被改变。如果像前面所述利用切片创建复制,得到的新列表会指向另外的空间,对任何一个列表的操作不会出现在另一个列表中。
item = list(range(0,10,1))
print(item)

print("切片复制测试:")
copy_item = item[:]
print(copy_item)

copy_item.append(666)   #只有copy_item会在末尾插入666
print(item)
print(copy_item)

print("直接赋值测试:")
assignment_item = item
print(assignment_item)

assignment_item.append(666)  #两个列表会同时在末尾插入666
print(item)
print(assignment_item)

输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
切片复制测试:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 666]
直接赋值测试:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 666]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 666]
  • 元组
    列表——可修改,适合用于存储在程序运行期间可能变化的数据集。
    元组——不可修改,即元组的值不可变,用于存储不希望被修改的元素。
    元组看起来很像列表,但使用圆括号而非中括号来标识。定义元组之后,就可使用索引来访问元素,就像访问列表元素一样。
    严格的说,元组是由逗号标识的,圆括号知识让元组看起来更整洁、清晰。如果要定义只包含一个元素的元组,必须在这个元祖后面加上逗号。创建只包含一个元素的元组通常没有意义,但自动生成的元组有可能只有一个元素。
    元组的定义:
item = tuple(range(1,10,2))  #可以使用range函数创建元组
print(item)

item2 = (1,2)  #可以直接定义元组
print(item2)

item3 = (3,)  #创建只有一个元素的元组
print(item3)

输出:
(1, 3, 5, 7, 9)
(1, 2)
(3,)

可以像遍历列表一样使用for循环遍历元组

item = tuple(range(1,10,2))  
print(item)

for i in item:
    print(i**2)

输出:
(1, 3, 5, 7, 9)
1
9
25
49
81

虽然不能修改远足的额元素,但是可以给存储元组的变量复制,即不能对元组的元素进行修改,但是可以重新定义整个元组。

item = (1,2)
print(item)

item = (9,10)
print(item)

输出:
(1, 2)
(9, 10)

试图修改元组元素时,会报错:

item = (1,2)
print(item)

item[0] = 6

错误提示:
Traceback (most recent call last):
  File "/Users/liheng/documents/CODES/Python/test.py", line 4, in 
    item[0] = 6
TypeError: 'tuple' object does not support item assignment

总而言之,元组是比列表更简单的数据结构,如果需要存储的一组值在程序的整个生命周期内都不变,就可以使用元组。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/329895.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号