首页 > 编程语言 >Python--操作列表

Python--操作列表

时间:2024-02-15 18:33:18浏览次数:35  
标签:Python list 列表 -- foods pets print pizza

Python--操作列表

遍历整个列表

对于每个元素的执行操作,使用单数和复数的名称,可用帮助判断代码片段处理的是单个列表元素还是整个列表.

magicians = ['alice', 'bob', 'charlie']
for magician in magicians:
    print(magician)
# alice
# bob
# charlie

在for循环中可以执行更多的操作

magicians = ['alice', 'bob', 'charlie']
for magician in magicians:
    print(magician.title() + ",that was great trick!")
    print("非常漂亮的表演" + magician.title() + '\n')
# Alice,that was great trick!
# 非常漂亮的表演Alice
# 
# Bob,that was great trick!
# 非常漂亮的表演Bob
# 
# Charlie,that was great trick!
# 非常漂亮的表演Charlie
#

缩进

Python中是用缩进来控制每个控制域的,而不是使用花括号来控制.所以有时候忘记缩进会让代码出现错误.

magicians = ['alice', 'bob', 'charlie']
for magician in magicians:
print(magician.title() + ",that was great trick!")

如果忘记缩进以外的代码行

magicians = ['alice', 'bob', 'charlie']
for magician in magicians:
    print(magician.title() + ",that was great trick!")
print("非常漂亮的表演" + magician.title() + '\n')
如果上面的代码忘记缩进那么只会打印最后一个charlie的名字,因为当循环最后一次结束的时候,magician里面存储的就是charlie.
# Alice,that was great trick!
# Bob,that was great trick!
# Charlie,that was great trick!
# 非常漂亮的表演Charlie

要避免没有必要的缩进,同时避免循环后没有必要的缩进.例如下面的情况

magicians = ['alice', 'bob', 'charlie']
for magician in magicians:
    print(magician.title() + ",that was great trick!")
    print('魔术表演结束,谢谢.')
# Alice,that was great trick!
# 魔术表演结束,谢谢.
# Bob,that was great trick!
# 魔术表演结束,谢谢.
# Charlie,that was great trick!
# 魔术表演结束,谢谢.



同时使用for循环的时候不要忘记里面的冒号

4-1 比萨:想出至少三种你喜欢的比萨,将其名称存储在一个列表中,再使用 for
循环将每种比萨的名称都打印出来。

pizzas=['肯德基','麦当劳','德克士']
for pizza in pizzas:
    print(pizza)
# 肯德基
# 麦当劳
# 德克士

修改这个 for 循环,使其打印包含比萨名称的句子,而不仅仅是比萨的名称。对
于每种比萨,都显示一行输出,如“I like pepperoni pizza”。

pizzas=['肯德基','麦当劳','德克士']
for pizza in pizzas:
    print('我喜欢'+pizza+'披萨')
# 我喜欢肯德基披萨
# 我喜欢麦当劳披萨
# 我喜欢德克士披萨

在程序末尾添加一行代码,它不在 for 循环中,指出你有多喜欢比萨。输出应包
含针对每种比萨的消息,还有一个总结性句子,如“I really love pizza!”。

pizzas=['肯德基','麦当劳','德克士']
for pizza in pizzas:
    print('我喜欢'+pizza+'披萨')
print('我真的很喜欢披萨')
# 我喜欢肯德基披萨
# 我喜欢麦当劳披萨
# 我喜欢德克士披萨
# 我真的很喜欢披萨

4-2 动物:想出至少三种有共同特征的动物,将这些动物的名称存储在一个列表中,再使用 for 循环将每种动物的名称都打印出来。

pets=['狗','猫','兔子']
for pet in pets:
    print(pet)
# 狗
# 猫
# 兔子

修改这个程序,使其针对每种动物都打印一个句子,如“A dog would make a great
pet”。

pets=['狗','猫','兔子']
for pet in pets:
    print('我非常喜欢'+pet)
# 我非常喜欢狗
# 我非常喜欢猫
# 我非常喜欢兔子

在程序末尾添加一行代码,指出这些动物的共同之处,如打印诸如“Any of these
animals would make a great pet!”这样的句子。

pets=['狗','猫','兔子']
for pet in pets:
    print('我非常喜欢'+pet)
print('我非常喜欢养宠物')
# 我非常喜欢狗
# 我非常喜欢猫
# 我非常喜欢兔子
# 我非常喜欢养宠物

数值列表类似于C语言中的计数型循环.

使用range()函数来生成一系列的数字

range(1,10) # 代表数字从1到9
for i in range(1,6):
    print(i)
# 1
# 2
# 3
# 4
# 5

使用range()来创建数字列表

如果想要创建数字列表,那么使用函数list()将range()的结果直接转换为列表.

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

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

numbers=list(range(2,11,2))
print(numbers)
# [2, 4, 6, 8, 10]

创建1-10的2次幂的列表

squares=[]
for i in range(1,11):
    square=i**2
    squares.append(square)
print(squares)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

对数字列表进行简单的统计计算

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

列表解析

一种代码量很短的方式来创建列表

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

数到 20:使用一个 for 循环打印数字 1~20(含)。

for i in range(1,21):
    print(i)

一百万:创建一个列表,其中包含数字 1~1 000 000,再使用一个 for 循环将这
些数字打印出来

for i in range(1,1000001):
    print(i)

计算 1~1 000 000 的总和:创建一个列表,其中包含数字 1~1 000 000,再使用
min()和 max()核实该列表确实是从 1 开始,到 1 000 000 结束的。另外,对这个列表调
用函数 sum(),看看 Python 将一百万个数字相加需要多长时间。

list=[]
for i in range(1,1000001):
    list.append(i)
print(sum(list))

奇数:通过给函数 range()指定第三个参数来创建一个列表,其中包含 1~20 的
奇数;再使用一个 for 循环将这些数字都打印出来。

list = []
for i in range(1, 20, 2):
    list.append(i)
for j in list:
    print(j)

3 的倍数:创建一个列表,其中包含 3~30 内能被 3 整除的数字;再使用一个 for
循环将这个列表中的数字都打印出来。

list = []
for i in range(3, 31,3):
    list.append(i)
for j in list:
    print(j)

将同一个数字乘三次称为立方。例如,在 Python 中,2 的立方用 2**3
表示。请创建一个列表,其中包含前 10 个整数(即 1~10)的立方,再使用一个 for 循
环将这些立方数都打印出来。

list = []
for i in range(1, 11):
    list.append(i ** 3)
for j in list:
    print(j)

立方解析:使用列表解析生成一个列表,其中包含前 10 个整数的立方。

list = [i**3 for i in range(1,11)]
print(list)

切片

切片可以提取列表的子集

pets=['狗','猫','兔子','仓鼠']
print(pets[0:3])
# 列表pets中0-3的切片
# ['狗', '猫', '兔子']
pets=['狗','猫','兔子','仓鼠']
print(pets[0:3])
# 列表pets中1-4的切片,也是左闭右开的方式
# ['狗', '猫', '兔子']

如果没有第一个切片的参数的话,默认从0索引开始切片.

pets = ['狗', '猫', '兔子', '仓鼠']
print(pets[:3])
# ['狗', '猫', '兔子']

如果最后一个切片的参数为空的话,默认截至到切片的结尾.

pets = ['狗', '猫', '兔子', '仓鼠']
print(pets[1:])
# ['猫', '兔子', '仓鼠']

遍历切片

可以在for循环中使用切片

pets = ['狗', '猫', '兔子', '仓鼠']
for pet in pets[1:]:
    print('%'+pet+'%')
# %猫%
# %兔子%
# %仓鼠%
pets = ['狗', '猫', '兔子', '仓鼠']
for pet in pets[1:3]:
    print('%'+pet+'%')
# %猫%
# %兔子%

复制列表

可以使用切片来复制列表,并且将整个列表赋值给一个新的列表变量.

my_foods=['pizza','falafel','carrot cake']
friend_foods=my_foods[:]
print(my_foods)
print(friend_foods)
friend_foods.append('ice cream')
my_foods.append('tank')
print(my_foods)
print(friend_foods)
# ['pizza', 'falafel', 'carrot cake']
# ['pizza', 'falafel', 'carrot cake']
# ['pizza', 'falafel', 'carrot cake', 'tank']
# ['pizza', 'falafel', 'carrot cake', 'ice cream']

同时新复制出来的列表和原本的列表是两个完全不同的列表.

注意

下面的两行代码的含义完全不同

第一个可以理解为将my_foods的地址赋值给了friend_foods,这两个本质上还是一个列表

但是第二个表示为将列表的切片存放到一个新的列表中,本质上是两个列表.

friend_foods=my_foods
friend_foods=my_foods[:]
my_foods=['pizza','falafel','carrot cake']

friend_foods=my_foods
my_foods.append('tank')
print(friend_foods)
print(my_foods)
['pizza', 'falafel', 'carrot cake', 'tank']
# ['pizza', 'falafel', 'carrot cake', 'tank']

切片:选择你在本章编写的一个程序,在末尾添加几行代码,以完成如下任务。
打印消息“The first three items in the list are:”,再使用切片来打印列表的前三个
元素。

fruits=['苹果','香蕉','橙子','水蜜桃','火龙果']
print('下面将打印前三个元素')
print(fruits[:3])
# 下面将打印前三个元素
# ['苹果', '香蕉', '橙子']

打印消息“Three items from the middle of the list are:”,再使用切片来打印列表中
间的三个元素。

fruits=['苹果','香蕉','橙子','水蜜桃','火龙果']
print('下面将打印前三个元素')
print(fruits[1:4])
# 下面将打印前三个元素
# ['香蕉', '橙子', '水蜜桃']

打印消息“The last three items in the list are:”,再使用切片来打印列表末尾的三
个元素。

fruits=['苹果','香蕉','橙子','水蜜桃','火龙果']
print('下面将打印最后三个元素')
print(fruits[2:5])
# 下面将打印最后三个元素
# ['橙子', '水蜜桃', '火龙果']

创建比萨列表的副本,并将其存储到变量 friend_pizzas 中,再完成如下任务。
在原来的比萨列表中添加一种比萨。
在列表 friend_pizzas 中添加另一种比萨。
核实你有两个不同的列表。为此,打印消息“My favorite pizzas are:”,再使用一
个 for 循环来打印第一个列表;打印消息“My friend’s favorite pizzas are:”,再使
用一个 for 循环来打印第二个列表。核实新增的比萨被添加到了正确的列表中。

my_pizzas=['肯德基','必胜客','德克士']
friend_pizzas=my_pizzas[:]
my_pizzas.append('百特喜')
friend_pizzas.append('巴贝拉')
print('我最喜欢的披萨是')
for pizza in my_pizzas:
    print(pizza)
print('我的朋友最喜欢的披萨是')
for pizza in friend_pizzas:
    print(pizza)
# 我最喜欢的披萨是
# 肯德基
# 必胜客
# 德克士
# 百特喜
# 我的朋友最喜欢的披萨是
# 肯德基
# 必胜客
# 德克士
# 巴贝拉

在本节中,为节省篇幅,程序 foods.py 的每个版本都没有使用
for 循环来打印列表。请选择一个版本的 foods.py,在其中编写两个 for 循环,将各个
食品列表都打印出来。

fruits=['苹果','香蕉','橙子','水蜜桃','火龙果']
for fruit in fruits:
    print(fruit)
my_foods=['pizza','falafel','carrot cake']
for food in my_foods:
    print(food)
# 苹果
# 香蕉
# 橙子
# 水蜜桃
# 火龙果
# pizza
# falafel
# carrot cake

元组

如果我们需要创建不可变的列表,那么我们可以使用元组.

Python将不能修改的值称为不可变的,而不可变的列表被称为元组。

元组的定义不用方括号,而是使用圆括号.

dimension=(200,50)
print(dimension[0])
print(dimension[1])
# dimension[0]=1 错误,我们不能强行修改元组中的值否则Python会返回错误的类型信息

# TypeError: 'tuple' object does not support item assignment

遍历元组

元组也可以和列表一样使用for循环来遍历

dimension=(200,50)
for i in dimension:
    print(i)
# 200
# 50

修改元组

虽然不能修改元组中的变量,但是可以重新定义元组

给元组的重新定义和合法的.

dimension=(200,50)
print('原本的元组是')
print(dimension)
dimension=(100,200)
print('修改之后的元组是')
print(dimension)
# 原本的元组是
# (200, 50)
# 修改之后的元组是
# (100, 200)

有一家自助式餐馆,只提供五种简单的食品。请想出五种简单的食品,并将其存储在一个元组中。

使用一个 for 循环将该餐馆提供的五种食品都打印出来。

foods=('火锅','烤肉','甜品','饮料')
for food in foods:
    print(food)
# 火锅
# 烤肉
# 甜品
# 饮料

尝试修改其中的一个元素,核实 Python 确实会拒绝你这样做。

image-20240215181920362

餐馆调整了菜单,替换了它提供的其中两种食品。请编写一个这样的代码块:
给元组变量赋值,并使用一个 for 循环将新元组的每个元素都打印出来。

foods=('火锅','烤肉','甜品','饮料')
print(foods)
foods=('火锅','烤肉','啤酒','冰淇淋')
print(foods)
# ('火锅', '烤肉', '甜品', '饮料')
# ('火锅', '烤肉', '啤酒', '冰淇淋')

标签:Python,list,列表,--,foods,pets,print,pizza
From: https://www.cnblogs.com/harper886/p/18016466

相关文章

  • POJ--3614 Sunscreen(贪心)
    记录18:262024-2-15http://poj.org/problem?id=3614贪心法,将minspf从大到小排列,然后选取最大的spf点击查看代码#include<iostream>#include<vector>#include<algorithm>#include<utility>#include<stdio.h>#include<string.h>usingnamespacestd;......
  • 洛谷 P9912 [COCI 2023/2024 #2] Zatopljenje 题解
    首先发现区间中的个数等于\(\texttt{高度大于x的位置的个数}-\texttt{连续两个位置都是大于x的位置的个数}\)。具体令\(H_i=\min(h_i,h_{i+1})(i\in[1,n-1])\),那么对于一次询问答案\(ans=\sum\limits_{i=l}^{r}[h_i>x]-\sum\limits_{i=l}^{r-1}[H_i>x]\),其......
  • Python笔记09——Set(集合)
    九、集合9.1基础集合(set)是一个无序的不重复元素序列,可进行交、集、差等常见的集合操作。与序列的区别:无序,每次输出顺序随机;元素不重复;创建格式:parame={value01,value02,...}或者set(value)(创建空集合只能用set())创建集合示例set1={1,2,3,4}#直接使用......
  • 【算法】006_图
    图的表示图的表示方法有很多种,如果遇到不同的表示方法,可以转换成自己最常用的那一种publicclassGraph{publicHashMap<Integer,Node>nodes;//点集publicHashSet<Edge>edges;//边集publicGraph(){}publicGraph(HashMap<Integer,Node>node......
  • SPFA最短路
    目录从Bellman-Ford开始核心思想模拟算法执行过程时间复杂度模板spfaspfa优化的思想模板从Bellman-Ford开始对于所有边权都大于等于0的图,任意两个顶点之间的最短路,显然不会经过重复的顶点或者边。也就是说任意一条最短路经过的定点数不会超过n个,边不会超过n-1条边而对于有边权......
  • Go语言指南练习:切片
    题目:实现Pic。它应当返回一个长度为dy的切片,其中每个元素是一个长度为dx,元素类型为uint8的切片。当你运行此程序时,它会将每个整数解释为灰度值(好吧,其实是蓝度值)并显示它所对应的图像。图像的选择由你来定。几个有趣的函数包括(x+y)/2,x*y,x^y,x*log(y)和x%(y+1)。(提示:需要......
  • 4.2 贝叶斯网络的基本概念
    贝叶斯网络(信念网络)一种用有向无环图DAG表示的概率模型,可用于描述存在依赖关系的多个事件之间的联合概率分布条件概率的图表示有向图、无向图、无环图贝叶斯网络模型的图表示节点表示随机变量有向边表示随机变量之间的条件依赖关系随机变量的条件独立性链式法则......
  • 性能测试-性能压测脚本的生成以及完善和增强
    1.通过JMeter代理服务器录制脚本为什么用JMeter做性能测试时要 设置客户端的代理JMeter在进行性能测试时,设置客户端代理的主要目的是为了监听和记录浏览器在相应端口的操作。通过设置代理,JMeter可以捕获和记录用户的网络请求和响应,从而模拟用户在真实场景中的行为,对系统进行性......
  • HGAME2024-WEB WP
    WEEK12048*16直接把前端全部扒下来,自己搭建一个本地的环境,我这里用vscode搭建了一个。然后看下js代码,这里混淆了一堆,实在是难看,就找关键的地方,题目所说的32768找到了上面这个算式,他的结果就算32768,所以我们只需要将这里修改:然后本地起服务,随便玩几下,即可得到flag:Bypas......
  • 欢迎来到 HZJ 的博客园
    前期提要原先我的博客是建立在洛谷上的原洛谷博客,但最近洛谷走向国际化,要把洛谷改成文章区,要经过一定时间的系统维护。我为了避免长时间的洛谷博客维护,就迁移到了博客园。我最近研究了一下博客园,其实洛谷博客要比博客园稍逊一筹的。博客园有\(LaTeX\)、有代码格式,有网站引......