【Python编程从入门到实践】列表、range、元组

第三章.列表

3.1 列表是有序集合[]

列表中可以放任何东西,其中的元素之间可以没有任何关系
给列表指定名字一般用复数,如:letters、digits、names

在Python中用方括号[]来表示列表,并用逗号分隔元素
访问最后一个列表元素可以用下标-1

bicycles = ["cannondale", '666', 23, "specialized", 'trek']
print(bicycles)  # 输出 ['cannondale', '666', 23, 'specialized', 'trek']
print(bicycles[4].title())  # 输出 Trek

# 通过索引指定为-1,可以让Python返回最后一个列表元素
# 通过索引指定为-2,可以让Python返回倒数第二个列表元素
# 因此可以在不知道列表长度的情况下访问最后的元素

print(bicycles[-1]) # 输出trek

3.2 列表的增删改查append del pop

列表是动态的,可以快速进行增删改查

append(word)
insert(index,word)

# 在列表末尾添加元素
bicycles.append("wilson")
print(bicycles)  # ['cannondale', '666', 23, 'specialized', 'trek', 'wilson']
# 在列表中插入元素
bicycles.insert(1, "here")  # 在下标为1的位置插入"here"(变成第二个元素,其余元素后移)
print(bicycles)  # ['cannondale', 'here', '666', 23, 'specialized', 'trek', 'wilson']

我们常需要从列表中删除元素,例如,玩家将空中的一个外星人射杀后,你需要将其从存活的外星人列表中删除

使用del删除元素

使用pop()删除元素
方法pop()可以删除列表末尾的元素,并让你能够接着使用它

arrays = ["Lebron", "Durant", "Kobe","Davis"]
del arrays[1] # 删除"Durant"

great = arrays.pop() # 删除"Davis",并把Davis赋给great
print(arrays) # ['Lebron', 'Kobe']
print(great) # Davis

使用pop(index)删除指定元素

players = ["Lebron", "Durant", "Kobe","Davis"]
players.pop(2) # 弹出索引为2的元素
print(players) # ['Lebron', 'Durant', 'Davis']

remove根据值删除元素

扫描二维码关注公众号,回复: 9199530 查看本文章
players = ["Lebron", "Durant", "Kobe","Davis"]
players.remove("Kobe") # 有时不知道列表中删除的值所处的位置,可用remove方法
sd = ["d"]
sd = players # 列表可以直接赋给另个列表
print(sd) # ['Lebron', 'Durant', 'Davis']

注意:remove只删除第一个指定的值

用while可以删除包含指定值的所有列表元素

pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
print(pets)

while 'cat' in pets:
    pets.remove('cat')

print(pets)

输出

['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
['dog', 'dog', 'goldfish', 'rabbit']

3.3 排序list.sort()和sorted(list)

sort()和sort(reverse=True) 永久性修改列表

pt = ["faith", "Computer", "79", "share"]
pt.sort() # 按字符从小到大排序
print(pt) # ['79', 'Computer', 'faith', 'share']
pt.sort(reverse=True) # 按字符从大到小排序
print(pt) # ['share', 'faith', 'Computer', '79']

sorted(list) 暂时性修改列表

cars = ['bmw', 'audi', 'toyota', 'subaru']
print(sorted(cars)) # ['audi', 'bmw', 'subaru', 'toyota']
print(cars) # ['bmw', 'audi', 'toyota', 'subaru']

list.reverse() 反转列表

len(list) 确定列表的长度
用途:确定还有多少个外星人未被射杀,需要管理多少项可视化数据,网站有多少注册用户

注意:发生索引错误(下标越界)却找不到解决方法时,可以尝试将列表或其长度打印出来

3.4 列表非空时执行

requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']
if requested_toppings:  # 列表非空时执行
...

第四章.操作列表

4.1 for循环

for循环要加冒号和注意缩进

使用单数和复数式名称,可以帮助判断代码段处理的是单个列表元素还是整个列表

for car in cats:
for item in list_of_items:

magicians = ['alice', 'david', 'carolina']
for magician in magicians:  # 每个缩进的代码行都是for循环的一部分
    print(magician.title() + 'Alice, that was great trick!')
    print("I can't wait to see your next trick, " + magician.title() + ".\n")

4.2 避免缩进错误

Python根据缩进来判断代码行与前一个代码行的关系
对于for语句后面且属于循环组成部分的代码行,一定要缩进

如果你预期某项操作将针对每个列表元素都执行一次,但它却只执行了一次,请确定是否需要将一行或多行代码缩进

下面示例中print无效缩进,因为它不属于前一行代码

message = "Hello Python World"
    print(message) # unexpected indent

为避免意外缩进错误,请只缩进需要缩进的代码

4.3 数字列表range(start, end, gap)

使用range()函数

range(start,end) # 左闭右开
range(end) = range(0,end) # 默认从0开始
range(start,end, gap)

for value in range(2, 7):
    print(value)  # 输出2-6

for va in range(3):
    print(va)  # 输出0-2

# 可以使用list()将range()的结果直接转换为列表
even_numbers = list(range(2, 11, 2))
print(even_numbers)  # 输出[2, 4, 6, 8, 10]

创建一个列表,1-10的平方

squares = []
for value in range(1, 11):
    square = value ** 2
    squares.append(square)

print(squares)  # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

对列表进行简单的统计计算
min(list)
max(list)
sum(list)

digits = [1, 2, 3, 4, 5]
print(max(digits))  # 5
print(min(digits))  # 1
print(sum(digits))  # 15

列表解析

列表解析是将for循环和创建新元素的代码合并成一行

# 列表解析
Ones = [val for val in range(5)]
print(Ones)    # [0, 1, 2, 3, 4]
Threes = [value ** 3 for value in range(1, 11)]
print(Threes)  # [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

4.4 切片list[start: end: gap] 列表/字符串

players[start:end:gap] 左闭右开

players = ['Lebron', 'Irving', 'Love', 'JR', 'Thompson']
print(players[1:5])  # 输出下标1-2的元素
print(players[1:5:3])  # 输出下标1, 4的元素
print(players[:4])  # 输出下标0-3的元素
print(players[1:])  # 没有结束索引时,自动终止于列表末尾
# ['Irving', 'Love', 'JR', 'Thompson']
# ['Irving', 'Thompson']
# ['Lebron', 'Irving', 'Love', 'JR']
# ['Irving', 'Love', 'JR', 'Thompson']

输出最后三个元素

players = ['Lebron', 'Irving', 'Love', 'JR', 'Thompson']
print(players[-3:]) # 输出最后三个元素

遍历切片

players = ['Lebron', 'Irving', 'Love', 'JR', 'Thompson']
for player in players[1:4]: # 遍历下标为1-3的元素
    print(player)

用途:排序后,获取某个玩家的三个最高得分;编写Web应用程序时,可使用切片来分页显示信息,并在每页显示数量合适的信息

字符串也有切片

filename = 'text_files/pi_million_digits.txt'

with open(filename) as file_object:
    pi_million = ""
    for line in file_object:
        pi_million += line.strip()  # 删除两端空格或\n

    print(pi_million[0:12])  # 输出字符串前12个字符

4.4.1 直接用列表赋值(指向)

相当于C++引用,把stars指向了players

players = ['Lebron', 'Irving', 'Love', 'JR', 'Thompson']
stars = players
players.append('Durant')
stars.append('Curry')
print(players)
print(stars) # 输出结果相同

4.4.2 用切片[:]赋值列表

切片表示法[:]创建列表副本

得到的两个不同的列表,相当于生成一个副本

players = ['Lebron', 'Irving', 'Love', 'JR', 'Thompson']
stars = players[:]
players.append('Durant')
stars.append('Curry')
print(players)  # ['Lebron', 'Irving', 'Love', 'JR', 'Thompson', 'Durant']
print(stars)  # ['Lebron', 'Irving', 'Love', 'JR', 'Thompson', 'Curry']

4.5 元组()

有时需要创建一系列不可修改的元素,元组(tuple)就可以满足这种需求

元组类似列表,但是使用圆括号而不是方括号来标识

不能修改元组中的元素,但能修改元组变量

# 元组
dimensions = (10, 15, 13)
print(dimensions)  # 输出 (10, 15, 13)
# dimensions[0] = 20    # 错误,不能修改元组中的元素
dimensions = (11, '2')  # 修改元组变量是可以的
print(dimensions)  # 输出 (11, '2')

下面的例子,表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变

tuple = (1, 2, [3, 4])
tuple[2][0] = 5
print(tuple)  # (1, 2, [5, 4])

在这里插入图片描述


写在最后:我的博客主要是对计算机领域所学知识的总结、回顾和思考,把每篇博客写得通俗易懂是我的目标,分享技术和知识是一种快乐 ,非常欢迎大家和我一起交流学习,有任何问题都可以在评论区留言,也期待与您的深入交流(^∀^●)

发布了239 篇原创文章 · 获赞 80 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_43827595/article/details/104293381