Python3 基础学习笔记 C03【操作列表】

CSDN 课程推荐:《8小时Python零基础轻松入门》,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员;已出版《跟老齐学Python:轻松入门》《跟老齐学Python:Django实战》、《跟老齐学Python:数据分析》和《Python大学实用教程》畅销图书。


Python3 基础学习笔记第三章【操作列表】

目录

  • 【3.1】遍历整个列表
    • 【3.1.1】在for循环中执行更多的操作
  • 【3.2】range()函数
    • 【3.2.1】对数字列表执行简单的统计计算
    • 【3.2.2】列表解析
  • 【3.3】使用列表的一部分
    • 【3.3.1】切片
    • 【3.3.2】遍历列表
    • 【3.3.3】复制列表
  • 【3.4】元组
    • 【3.4.1】定义元组
    • 【3.4.2】遍历元组中所有的值
    • 【3.4.3 】修改元组变量


【3.1】遍历整个列表

使用 for 循环来遍历整个列表:

 names = ['alice' , 'david' , 'liwei']for name in names:print(name)

输出结果如下:

alice
david
liwei

for循环让Python从列表names中取出一个名字,并将其储存在变量name中,最后 让Python打印前面储存到变量name中的名字,对于列表中的每个名字,Python都将 重复执行后两行代码,将列表names中的每个名字都打印出来

【3.1.1】在for循环中执行更多的操作

在for循环中,可对每个元素执行任何操作,下面对前面的示例进行扩展:

例一:

names = ['alice' , 'david' , 'liwei']
for name in names:print(name.title() + ", that was a good man!")

输出结果如下:

Alice, that was a good man!
David, that was a good man!
Liwei, that was a good man!

例二:

names = ['alice' , 'david' , 'liwei']
for name in names:print(name.title() + ", that was a good man!")print("I can't wait to see you again," + name.title() + ".\n")
print("Nice to meet you!")

输出结果如下:

Alice, that was a good man!
I can't wait to see you again,Alice.David, that was a good man!
I can't wait to see you again,David.Liwei, that was a good man!
I can't wait to see you again,Liwei.Nice to meet you!

【3.2】range()函数

Python使用range()函数能够轻松地生成一系列的数字

Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表;

Python3 list() 函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表;

Python2 range() 函数返回的是列表

例一:

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

输出结果如下:

1
2
3
4

例二:

for i in range(5):print(i)

输出结果如下:

0
1
2
3
4

例三:

>>> list(range(5))
[0, 1, 2, 3, 4]
>>> list(range(0))
[]
>>>list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]
>>> list(range(0, 10, 2))
[0, 2, 4, 6, 8]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> list(range(1, 0))
[]

例四:

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

输出结果如下:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

【3.2.1】对数字列表执行简单的统计计算

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

【3.2.2】列表解析

列表解析能够让比如3.2中的例四更加简化,只需要一行代码就能生成这样的列表,列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素:

 squares = [value ** 2 for value in range(1,11)]print(squares)

在这个示例中,for循环为for value in range(1,11),它将值1~10提供给表达式value ** 2
输出结果如下:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

【3.3】使用列表的一部分

处理列表的部分元素——Python称之为切片

【3.3.1】切片

list = ['a','b','c','d','e','f']
print(list[:])     #省略全部,代表截取全部内容,可以用来将一个列表拷给另一个列表
print(list[:3])     #省略起始位置的索引,默认起始位置从头开始,结束位置索引为2
print(list[3:])     #省略结束位置的索引,默认结束位置为最后一个,开始位置索引为3
print(list[1:4])    #开始位置索引为1,结束位置索引为3,顾头不顾尾
print(list[4:1])    #从左到右索引,因此为空值
print(list[-1:-3])   #从左到右索引,因此为空值
print(list[-3:-1])   #开始位置索引为倒数第三个,结束位置索引为倒数第二个
print(list[1:5:2])   #开始位置索引为1,结束位置索引为4,间隔2
print(list[5:1:-1])   #反向取值,开始位置索引为5,结束位置索引为2
print(list[::-1])    #反向取值,反向输出列表

【3.3.2】遍历列表

players = ['charles' , 'martina' , 'michael' , 'florence' , 'eli']
print("Here are the first three players on my team:")
for player in players[:3]:print(player.title())

输出结果如下:

Here are the first three players on my team:
Charles
Martina
Michael

【3.3.3】复制列表

要复制列表,可以创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:]),这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表:

my_foods = ['pizza' , 'falafel' , 'carrot cake']
friend_foods = my_foods[:]
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)

输出结果如下:

My favorite foods are:
['pizza', 'falafel', 'carrot cake']My friend's favorite foods are:
['pizza', 'falafel', 'carrot cake']

为核实我们的确有两个列表,下面在每个列表中都添加一种食品,并核实每个列表都记录了相应人员喜欢的食品:

my_foods = ['pizza' , 'falafel' , 'carrot cake']
friend_foods = my_foods[:]my_foods.append('cannoli')
friend_foods.append('ice cream')print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)

输出结果如下:

My favorite foods are:
['pizza', 'falafel', 'carrot cake', 'cannoli']My friend's favorite foods are:
['pizza', 'falafel', 'carrot cake', 'ice cream']

输出结果表明,'cannoli’包含在我喜欢的食品列表中,而’ice cream’没有;'ice cream’包含在我朋友喜欢的食品中,而’cannoli’没有,假如我们只是简单的将my_foods赋给friend_foods,就不能得到两个列表。下面是错误示例:

my_foods = ['pizza' , 'falafel' , 'carrot cake']
friend_foods = my_foods    #错误写法my_foods.append('cannoli')
friend_foods.append('ice cream')print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)

错误示例输出结果如下:

My favorite foods are:
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']My friend's favorite foods are:
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']

【3.4】元组

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

【3.4.1】定义元组

元组看起来就像是列表,但元组使用圆括号而不是方括号来标识,定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样:

dimensions = (200,50)
print(dimensions[0])
print(dimensions[1])

输出结果如下:

200
50

如果尝试修改元组中元素的值,将会导致Python返回类型错误消息,由于试图修改元组的操作是被禁止的,因此Python指出不能给元组的元素赋值:

dimensions = (200,50)
dimensions[0] = 300

将会报错:

Traceback (most recent call last):File "dimensions.py", line 2, in <module>dimensions[0] = 300
TypeError: 'tuple' object does not support item assignment

【3.4.2】遍历元组中所有的值

像列表一样,元组也可以使用for循环来遍历元组中的所有值:

例一:

dimensions = (200,100,50,6)
for dimension in dimensions:print(dimension)

输出结果如下:

200
100
50
6

例二:

dimensions = (200,100,50,6)
for dimension in dimensions[:3]:print(dimension)

输出结果如下:

200
100
50

【3.4.3 】修改元组变量

虽然不能修改元组元素,但是可以给储存元组的变量赋值:

dimensions = (200,50)
print("Original dimensions:")
for dimension in dimensions:print(dimension)dimensions = (400,100)
print("\nModified dimensions:")
for dimension in dimensions:print(dimension)

输出结果如下:

Original dimensions:
200
50Modified dimensions:
400
100

我们首先定义了一个元组,并将其储存的尺寸打印了出来;然后将一个新元组储存到变量dimensions中,打印新的尺寸;相比于列表,元组是更简单的数据结构。如果需要储存的一组值在程序的整个生命周期内都不变,可使用元组

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438058.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PWN-PRACTICE-BUUCTF-30

PWN-PRACTICE-BUUCTF-30suctf_2018_stackwdb_2018_3rd_soEasy[BSidesCF 2019]Runitqctf2018_stack2suctf_2018_stack 栈溢出&#xff0c;ret2text&#xff0c;返回地址不能直接是next_door的起始地址 设置返回地址为0x40067A&#xff0c;开始设置系统调用的参数以及系统调用号…

Java编写程序时出现警告:Resource leak: 'xxx' is never closed 解决方案

菜鸟新手&#xff0c;学校在教Java&#xff0c;作业里面要求我们编程实现运算一个简单的程序&#xff0c;程序写好了&#xff0c;却发现冒出一个警告&#xff0c;如下图&#xff1a; 百度了一下&#xff0c;意思是申明了名为a的数据输入扫描仪&#xff08;Scanner&#xff09…

ASP.Net请求处理机制初步探索之旅 - Part 1 前奏

开篇&#xff1a;ASP.Net是一项动态网页开发技术&#xff0c;在历史发展的长河中WebForm曾一时成为了ASP.Net的代名词&#xff0c;而ASP.Net MVC的出现让这项技术更加唤发朝气。但是&#xff0c;不管是ASP.Net WebForm还是ASP.Net MVC在请求处理机制上大部分都是相同的&#xf…

Python3 基础学习笔记 C04【if 语句】

CSDN 课程推荐&#xff1a;《8小时Python零基础轻松入门》&#xff0c;讲师齐伟&#xff0c;苏州研途教育科技有限公司CTO&#xff0c;苏州大学应用统计专业硕士生指导委员会委员&#xff1b;已出版《跟老齐学Python&#xff1a;轻松入门》《跟老齐学Python&#xff1a;Django实…

ASP.Net请求处理机制初步探索之旅 - Part 2 核心

开篇&#xff1a;上一篇我们了解了一个请求从客户端发出到服务端接收并转到ASP.Net处理入口的过程&#xff0c;这篇我们开始探索ASP.Net的核心处理部分&#xff0c;借助强大的反编译工具&#xff0c;我们会看到几个熟悉又陌生的名词&#xff08;类&#xff09;&#xff1a;Http…

Python3 基础学习笔记 C05【字典】

CSDN 课程推荐&#xff1a;《8小时Python零基础轻松入门》&#xff0c;讲师齐伟&#xff0c;苏州研途教育科技有限公司CTO&#xff0c;苏州大学应用统计专业硕士生指导委员会委员&#xff1b;已出版《跟老齐学Python&#xff1a;轻松入门》《跟老齐学Python&#xff1a;Django实…

REVERSE-COMPETITION-0xGame2021

REVERSE-COMPETITION-0xGame2021Signin: User FriendlyInstallerOur Compilation StoryPacketRandom ChaosNeverlandRoundaboutDespacitoSecret BaseMazeZero ThreeMirrorThread_TLS茶谈室JunkertownSignin: User Friendly 64位exe&#xff0c;ida打开&#xff0c;在main函数中…

ASP.Net请求处理机制初步探索之旅 - Part 3 管道

开篇&#xff1a;上一篇我们了解了一个ASP.Net页面请求的核心处理入口&#xff0c;它经历了三个重要的入口&#xff0c;分别是&#xff1a;ISAPIRuntime.ProcessRequest()、HttpRuntime.ProcessRequest()以及HttpApplication.Init()。其中&#xff0c;在HttpApplication的Init(…

Python3 基础学习笔记 C06【用户输入和 while 循环】

CSDN 课程推荐&#xff1a;《8小时Python零基础轻松入门》&#xff0c;讲师齐伟&#xff0c;苏州研途教育科技有限公司CTO&#xff0c;苏州大学应用统计专业硕士生指导委员会委员&#xff1b;已出版《跟老齐学Python&#xff1a;轻松入门》《跟老齐学Python&#xff1a;Django实…

PWN-COMPETITION-GeekChallenge2021

PWN-COMPETITION-GeekChallenge2021check in恋爱小游戏ret2xxone恋爱小游戏2.0easyfmteasycanaryret2babypwn777check in 66s内解答200道四则运算的题目即可getshell 参与运算的数和运算符都会打印&#xff0c;直接写脚本即可 # -*- coding:utf-8 -*- from pwn import * cont…

ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期

开篇&#xff1a;上一篇我们了解了所谓的请求处理管道&#xff0c;在众多的事件中微软开放了19个重要的事件给我们&#xff0c;我们可以注入一些自定义的业务逻辑实现应用的个性化设计。本篇&#xff0c;我们来看看WebForm模式下的页面生命周期。 &#xff08;1&#xff09;Par…

Python3 基础学习笔记 C07【函数】

CSDN 课程推荐&#xff1a;《8小时Python零基础轻松入门》&#xff0c;讲师齐伟&#xff0c;苏州研途教育科技有限公司CTO&#xff0c;苏州大学应用统计专业硕士生指导委员会委员&#xff1b;已出版《跟老齐学Python&#xff1a;轻松入门》《跟老齐学Python&#xff1a;Django实…

REVERSE-COMPETITION-GeekChallenge2021

REVERSE-COMPETITION-GeekChallenge2021Re0刘壮桌面美化大师买ActivityRe1调试珍惜生命new_languageeasypycBrute_forcewin32wasm猜拳have_a_teaRe0 64位exe&#xff0c;ida打开&#xff0c;main函数中没发现什么重要的逻辑 ShiftF12打开字符串窗口&#xff0c;直接找到flag明…

ASP.Net请求处理机制初步探索之旅 - Part 5 ASP.Net MVC请求处理流程

开篇&#xff1a;上一篇我们了解了在WebForm模式下一个Page页面的生命周期&#xff0c;它经历了初始化Init、加载Load以及呈现Render三个重要阶段&#xff0c;其中构造了页面控件树&#xff0c;并对页面控件树进行了大量的递归操作&#xff0c;最后将与模板结合生成的HTML返回给…

Python 3 报错 TypeError: object() takes no parameters【新手必过坑之一】

在学习 Python 3 类的时候&#xff0c;有如下程序&#xff1a; class Dog():def __init__(self,name,age):#初始化属性name和ageself.name nameself.age agedef sit(self):#模拟小狗被命令时蹲下print(self.name.title() " is now sitting.")def roll_over(self)…

REVERSE-PRACTICE-CTFSHOW-6

REVERSE-PRACTICE-CTFSHOW-6真的是签到批量生产的伪劣产品来一个派森snake真的是签到 附件是一个压缩包&#xff0c;解压需要密码&#xff0c;但是题目没有给到解压密码 实际上是压缩包伪加密&#xff0c;将如图橙色处原本的字节0x09改为0x00&#xff0c;保存后即可解压出文件…

Python3 基础学习笔记 C08 【类】

CSDN 课程推荐&#xff1a;《8小时Python零基础轻松入门》&#xff0c;讲师齐伟&#xff0c;苏州研途教育科技有限公司CTO&#xff0c;苏州大学应用统计专业硕士生指导委员会委员&#xff1b;已出版《跟老齐学Python&#xff1a;轻松入门》《跟老齐学Python&#xff1a;Django实…

ASP.NET中共有哪几种类型的控件?其中,HTML控件、HTML服务器控件和WEB服务器控件之间有什么区别

【考点】 ASP.NET中的控件类型理解。 【出现频率】 ★★★☆☆ 【解答】 ASP.NET的控件包括WEB服务器控件、WEB用户控件、WEB自定义控件、HTML服务器控件和HTML控件。HTML控件、HTML服务器控件和WEB服务器控件之间的区别如下所示。 q HTML控件&#xff1a;这完全是浏览器端…

Python3 基础学习笔记 C09【文件和异常】

CSDN 课程推荐&#xff1a;《8小时Python零基础轻松入门》&#xff0c;讲师齐伟&#xff0c;苏州研途教育科技有限公司CTO&#xff0c;苏州大学应用统计专业硕士生指导委员会委员&#xff1b;已出版《跟老齐学Python&#xff1a;轻松入门》《跟老齐学Python&#xff1a;Django实…

REVERSE-PRACTICE-CTFSHOW-7

REVERSE-PRACTICE-CTFSHOW-7签层饼Tea_tube_poteasy贪吃蛇的秘密签层饼 32位exe&#xff0c;ida打开 main函数中&#xff0c;输入两个大于0的数字&#xff0c;如果flag_num为0&#xff0c;则将两个输入作为flag的一部分&#xff0c;打印flag 选中input_1按x查找交叉引用&…