当前位置: 首页 > 编程日记 > 正文

第四章:操作列表

第四章:操作列表
4.1 遍历整个列表
如果名单很长,将包含大量反复的代码。另外,每当名单的长度发生变化时,都必须修改代码。通过for
循环,可让Python去处理这些问题
1)使用for循环来打印魔术师名单中的所有名字:  magicians.py
例:magicians=['alice','david','carolina']
for magician(变量名) in magicians:
print(magician) 变量名
2)这行代码让Python从列表magicians中取出一个名字,并将其存储在变量magician中。最后,我们让
Python打印前面存储到变量magicica中的名字。这样,对于列表中的每个名字,Python都将重复执行
代码行。
也可以这样解读代码:对于列表magicians中的每位魔术师,都将其名字打印出来
4.1.1 深入地研究循环
循环这种概念很重要,因为它是计算机自动完成重复工作的常见方式之一。
1)Python将首先读取其中第一行代码:for magician in magicians
这行代码让Python获取列表magicians中的第一个值('alice'),并将其存储到变量magician
中。
2)接下来,Python读取下一行代码:print(magician)
它让Python打印magician的值依然是'alice'
3)接下来,Python再次执行循环,对列表中最后一个值----'carolina'进行处理。在这个示例中,for循环后面没有其他代码,因此程序就此结束。
补充:另外,编写for循环时,对于用于存储列表中每个值的临时变量,可指定任何名称。然而,选择描述单个列表元素的有意义的名称大有帮助。例如,对于小猫列表、小狗列表和一般性列表。
例:for cat in cats:
for dog in dogs:
for item in list_of_items:
4.1.2  在for循环中执行更多操作
1)在for循环中,可对每个元素执行任何操作。对于每位魔术师,都打印一条消息,指出他的表演精彩
例:magicians=['alice','david','carolina']
for magician in magicians:
print(magician.title()+',that was a great trick!')
4.1.3 在for循环结束后执行一些操作
1)在for循环后面,没有缩进的代码都只执行一次,而不会重复执行。
2)下面打印一条向全体魔术师致谢的消息,感谢他们的精彩表演。
3)想要打印一条给全体魔术师的致谢消息,需要将相应的代码放在for循环后面,且不缩进
例:magicians=['alice','david','carolina']
for magician in magicians:
print(magician.title()+',that was a great trick!')
print("I can't wait to see your next trick, "+magician.title()+'.')
print('Thank you,everyone.That was a great magic show!')
4.2   缩进
4.2.1 忘记缩进
1)对于位于for语句后面且属于循环组成部分的代码行,一定要缩进。如果忘记缩进,Python会提醒你
例:magicians=['alice','david','carolina']
for magician in magicians:
print(magician)  #会有缩进报错:IndentationError: expected an indented block
4.2.2 忘记缩进额外代码行
1)有时候,循环能够运行而不会报告错误,但结果可能会出乎意料。
例:magicians=['alice','david','carolina']
for magician in magicians:
print(magician.title()+',that was a great trick!')
print("I can't wait to see your next trick, "+magician.title()+'.')#忘记缩进的额外代码行执行语句后效果与需求不符
4.2.3 不必要的缩进
1)如果你不小心缩进了无需缩进的代码行,Python将指出这一点
例:message="Hello Python world!"
print(message) #不必要的所及报错 :IndentationError: unexpected indent
4.2.4 循环后不必要的缩进
1)如果你不小心缩进了应在循环结束后执行的代码,这些代码将针对每个列表元素重复执行。
这可能导致Python报告语法错误,但在大多数情况下,这只会导致逻辑错误。
例:magicians=['alice','david','carolina']
for magician in magicians:
print(magician.title()+',that was a great trick!')
print("I can't wait to see your next trick, "+magician.title()+'.')
print('Thank you,everyone.That was a great magic show!') #循环后不必要的缩进
4.2.5 遗漏了冒号
1)for语句末尾的冒号告诉Python,下一行是循环的第一行
例:magicians=['alice','david','carolina']
for magician in magicians    #遗漏冒号报错:SyntaxError: invalid syntax
prin(magician)
4.3  创建数值列表
4.3.1  使用函数range()
1)Python函数range()让你能够轻松地生成一系列的数子  numbers.py
例:for value in range(1,5)
print(value)   ===>打印数子1,2,3,4
2)函数range()让Python从你指定的第一个值开始,并在到达你指定的第二个值后停止,因此输入不包含第二个值(这里为5)
4.3.2  使用range()创建数子列表
1)要创建数子列表,可使用函数list()将range()的结果直接转换为列表。如果将range()作为list()参数,输出将为一个数子列表
4.3.3  对数子列表执行简单的统计计算
1)min(变量名)方法:找出列表中的最小值
例:digits=[1,2,3,4,5,6,7,8,9,0]
min(digits) ===> 0
2)max(变量名)方法:找出列表中的最大值
例:digits=[1,2,3,4,5,6,7,8,9,0]
max(digits) ===>9
3)sum(变量名)方法:找出列表总和
例:digits=[1,2,3,4,5,6,7,8,9,0]
sum(digits) ===>45
4.3.4  列表解析
1)列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素
例:squares=[value**2 for value in range(1,11)]
print(squares)
2)要使用这种语法
<1>首先指定一个描述性的列表名,如squares。
<2>然后,指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。在这个示例中表达式为 "value**2" 它计算平方值
<3>接下来,编写一个for循环,用于给表达式提供值,再加上右方括号。在这个示例中,for循环为 “for value in range(1,11)”
它将值1~10提供给表达式  “value**2”
<4>注意:这里的for循环语句末尾没有冒号
4.4.1  切片
1)要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range()一样,Python在到达你指定的第二个索引前面的元素后停止。要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0、1和2元素。
例:players=['charles','martina','michael','florence','eli']
print(players[0:3])
2)可以生产列表的任何子集,例如:如果你要提取列表的第2~4个元素,可将起始索引指定为1,并将终止索引指定为4
例:players=['charles','martina','michael','florence','eli']
print(players[1:4])
3)如果你没有指定第一个索引,Python将自动从列表开头开始
例:players=['charles','martina','michael','florence','eli']
print(players[:4])
4)要让切片终止列表末尾,也可使用类似的语法。例如,如果要提取第3个元素到列表末尾的所有元素,可将起始索引指定为2,并省略终止索引
例:players=['charles','martina','michael','florence','eli']
print(players[2:])
5)无论列表多长,这种语法都能够让你输出从特定位置到列表末尾的所有元素。本书前面说过,负数索引返回离列表末尾相应距离的元素,因此你可以输出列表末尾的任何切片。例如,如果你要输出名单上的最后三名队员,可以使用切片players[-3:]
例:players=['charles','martina','michael','florence','eli']
print(players[-3:])
6)切片的第三个参数:从x到y-1,每n个取一个制作切片(可以理解为步长)
例:num=[num for num in range(1,101)]
print(num[2::3])    #从1到100取3的倍数      从3开始到列表最后个元素100,每3个取一个制作切片
print(num[4:50:5])  #从5开始到50取5的倍数   从5开始到50 步长为5
4.4.2  遍历切片
1)如果要遍历列表的部分元素,可在for循环中使用切片。在下面的示例中,我们遍历前三名队员,并打印他们名字
例:players=['charles','martina','michael','florence','eli']
print("Here are th first three players on my team:")
for player in players[:3]:
print(player.title())
2)在很多情况下,切片都很有用。例如,编写游戏时,你可以在玩家退出游戏时将其最终得分加入到一个列表中。然后,为获取该玩家的三个最高得分,你可以将该列表按降序排列,再创建一个只包含前三个得分的切片
4.4.3  复制列表
1)要复制列表,可创建一个包含整个列表的切片,方法是同时省略其实索引和终止索引([:])。这让Python创建一个始于第一个元素,终止最后一个元素的切片,即复制整个列表。
假如,假设有一个列表,其中包含你最喜欢的三种食品,而你还想创建另一个列表,在其中包含一位朋友喜欢的所有食品。
不过,你喜欢的食品,这位朋友都喜欢,因此你可以通过复制来创建这个列表
例:my_foods=['pizza','falafel','carrot cake']
frind_foods=my_foods[:]
print("My favorite foods are: ")
print(my_foods)
print("\nMy friends's favorite foods are: ")
print(friend_foods)
4.5  元组
1)列表非常适合用于存储在程序运行期间可能变化的数据集。列表是可以修改的,这对处理网站的用户列表或游戏中的角色列表至关重要。然而,有时候你需要创建一系列不可修改的元素,元组可以满足这种需求。Python将不能修改的值称为 不可变的,而不可变的列表呗称为元组
4.5.1  定义元组
1)元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。
例:dimensions=(200,50)
dimensions[0]=250    #改变第一个元素的值
===> 此时python会报错,并给出错误提示:不能给元组的元素赋值
4.5.2  遍历元组中的所有值
1)像列表一样,也可以使用for循环来遍历元组中的所有值:
例:dimensions=(200,50)
for dimension in dimensions:
print(dimension)
4.5.3  修改元组变量
1)虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述举行的尺寸,可重新定义整个元组:
例:dimensions=(200,50)
print("Original dimensions: ")
for dimension in dimensions:
print(dimension)
dimensions=(400.100)   #给元组重新赋值
print("")
4.6      设置代码格式
为确保所有人编写的代码的结构都大致一致,Python程序猿都遵循一些格式设置约定。学会编写整洁的Python后,就能明白他人编写的Python代码的整体结构——只要他们和你遵循相同的指南。要成为专业程序猿,应从现在开始遵循这些指南,以养成良好的习惯。
4.6.1    格式设置指南
详情请访问https://www.python.org/dev/peps/pep-0008/,  阅读PEP 8 格式设置指南
4.6.2    定制Geany的设置
1、将制表符转换为空格
选择菜单Edit(编辑)---->Preferences(首选项),再依次单击Editor(编辑器)---->Indentation(缩进)。将制表符宽度设置为4
并将Type设置为Spaces
如果你在程序中混合使用了标示符和空格,可选择菜单Document(文档)---->Replace Tabs by Spaces(替换制表符为空格),将所有制表符都转换为空格
2、设置行长标志
要在Geany中设置这项功能,请选择菜单Edit(编辑)---->Preferences(首选项),再依次单击Editor(编辑器)---->Display(显示),确保启用了长行标志,再确保文本框“列”中的值为79
3、缩进和撤销缩进代码块
要缩进代码块         可按Ctrl+I
要撤销代码块缩进     可按Ctrl+U

转载于:https://www.cnblogs.com/catepython/p/7998561.html

相关文章:

约束,索引,rownumrownum

--constraint --not null 非空约束 --unique 唯一键 --非空&唯一 --自定义检查约束 --创建约束时&#xff0c;为约束起名 --在添加完列后&#xff0c;还可以添加约束 --除了not null不可以 --主键约束 --为了保证该列的数据能够证明行记录在表中是唯一的 --主键约束从形式看…

微信小程序如何搭建本地环境开发

必要软件 ngrok :用来搭建内网穿透微信小程序开发工具微信小程序账号 如何使用ngrok 搭建内网穿透 在官网下载windows版本的ngrok&#xff0c;并且注册一个免费的账号&#xff0c;至此会给你生成一个认证码。ngrok官网&#xff0c;附一个下载好的文件&#xff0c;里包括官方版…

跨域部署Silverlight时需要注意的问题

当我们的Silverlight程序(.xap)发布地址和网页发布地址处于不同服务器上(跨域状态)时&#xff0c;由于安全机制在Silverlight和Javascript调用时会出现一些问题&#xff0c;如&#xff1a;Silverlight调用页面中的Javascript方法或页面中的Javscript调用Silverlight方法时报错或…

做国内最好的ITSM服务管理软件

E8.HelpDesk支持多种服务台管理体系&#xff0c;支持事件管理、问题管理、变更管理、配置管理、发布管理、运行管理的全程自动化&#xff1b;整个处理工作以流程自动化的任务贯穿&#xff0c;形成闭环的工作流&#xff0c;并有计划任务机制、报警提醒机制、事件升级机制、跟踪反…

AppBaseJs 类库 网上常用的javascript函数及其他js类库写的

AppBaseJs类库。一个借鉴了网上常用的函数及其他js类库写的,方便大家的调用。代码如下:/*----------------------------------- Web Application JavaScript Library 2009.11 janchie ------------------------------------*///String原生对象扩展 置空左右端空格 String.proto…

字符串转换整数 (atoi)

题目&#xff1a; 请你来实现一个 atoi 函数&#xff0c;使其能将字符串转换成整数。 首先&#xff0c;该函数会根据需要丢弃无用的开头空格字符&#xff0c;直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时&#xff0c;则将该符号与之后面尽可…

Spring boot 忽略对mybatis的配置

SpringBootApplication(exclude{DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class}) https://blog.csdn.net/wo541075754/article/details/73379962

Git远程仓库地址变更

简单方法 使用方法三 方法有很多&#xff0c;这里简单介绍几种&#xff1a; 以下均以项目git_test为例&#xff1a; 老地址&#xff1a;http://192.168.1.12:9797/john/git_test.git 新地址&#xff1a;http://192.168.100.235:9797/john/git_test.git 远程仓库名称&#xff…

如何优化你的网站快速提高流量

网站页面优化的SEO策略 对那些会主动产生成百上千甚至成千上万页面的网站优化&#xff0c;一定要转换思维方式。传统SEO程序&#xff0c;先调查选定关键词&#xff0c;然后针对每个关键词主题产生页面&#xff0c;手动书写标题标签&#xff0c;段落标题标签 和页面简介&#xf…

c#正则表达式使用详解

正则表达式(Regular expressions)是一套语法匹配规则&#xff0c;各种语言&#xff0c;如Perl&#xff0c; .Net和Java都有其对应的共享的正则表达式类库。在.Net中&#xff0c;这个类库叫做Regex。简单的说&#xff0c;Regex是从字符窗中查找匹配字符串的应用类。通过Regex&am…

软件安装(ubuntu) --Linux基础编程

Ubuntu&#xff1a;一个以桌面应用为主的开源GNU/Linux操作系统 1、在线安装&#xff08;Ubuntu Example&#xff09; 【安装】&#xff1a;sudo apt-get install 安装包的名字&#xff0c;或者&#xff1a;sudo apt install 安装包的名字&#xff08;16.04及以上版本&#xff…

Springboot结合 framework 加载静资源 出现404 问题解决 记录

<!- 在HTML页面加入这样--><#assign ctxrequest.contextPath /> 在引入的静态资源路径上 添加以下内容

studyLink

http://order.csdn.net/myorder/detail?id850343 csdn 转载于:https://www.cnblogs.com/zhujiasheng/p/8010861.html

CCNA的一个综合实验(经典)

【背景描述】 该企业的具体环境如下&#xff1a; 1、企业具有2个办公地点&#xff0c;且相距较远&#xff0c;公司总共大约有200台主机。 2、A办公地点具有的部门较多&#xff0c;例如业务部、财务部、综合部等&#xff0c;为主要的办公场所&#xff0c;因此这部分的交换网络对…

关于EF中批量添加的个人探索

实际的测试代码和数据记录&#xff0c;还有最终的总结都在下面&#xff1a; /// <summary>/// 这种做法&#xff0c;不用了说了&#xff0c;每次遍历都会打开一次db链接&#xff0c;然后执行insert操作&#xff1b;/// </summary>static void CreateBluckInsertDat…

HDOJ 1157 HDU 1157 Who's in the Middle ACM 1157 IN HDU

MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid1157 题目描述:Whos in the MiddleTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2451 Accep…

Keras使用多个GPU并行

model Model(inputs[v_i, v_j], outputsoutput_list) model multi_gpu_model(model,4) model.compile(....) 主要就是第二句话中的 multi_gpu_model函数&#xff0c;会把数据和模型分到多个gpu上执行有个坑&#xff0c;就是整个程序导入keras时要么全部from keras import ...…

使用JackJSON 流式API 创建JSON串【学习记录】

教程网址&#xff1a;Jackson流式API 目标JSON串 原始JSON串 核心代码 思路&#xff1a;先将原始JSON串生成对应的对象&#xff0c;获取到其数据 package com.run.runlpwebdemo.utils;import java.io.IOException; import java.io.StringWriter; import java.util.List;impo…

Eclipse插件安装

clispe想必大家都很熟悉了&#xff0c;一般来说&#xff0c;eclipse 插件都是安装在plugins目录 下。不过这样一来&#xff0c;当安装了许多插件之后&#xff0c;eclipse变的很大&#xff0c;最主要的是不便 于更新和管理众多插件。用links 方式安装eclipse插件&#xff0c;可以…

linux 命令之文件读取,head, tail, tailf, sed

head 看文件的前100行head -100 filename tail/tailf查看文件的后100行tail -100 filename 或 tail -n 100 filename tailf filename tail -f filename sed sed -n 100,200p filename 这样你就可以只查看文件的第100行到第200行。 转载于:https://www.cnblogs.com/xiaoniu-…

软件使用[19]

1 -- 服务自动的原理2 -- 命令chkconfig使用方法chkconfig是Linux系统中基于命令行的服务管理工具&#xff0c;其用途是启用和禁用系统服务。 chkconfig --list [name] chkconfig --add name chkconfig --del name chkconfig [--level levels] name chkconfig [--level le…

ORA-01747: user.table.column, table.column 或列说明无效 异常解决方法总结

1.sql 拼接错误 比如多了个逗号&#xff0c;少了个引号什么的&#xff0c;大部分其实都是这个问题&#xff0c;还是多细心&#xff0c;复制粘贴的时候多看看。 2.sql语句中使用了 Oracle 声明的关键字 --查询数据库关键字select * from v$reserved_words;----查询表中是否有关键…

SpringBoot 获取 application.properties 文件中的内容方法 【学习记录】

1 . Value注解来获取配置的值 2. ConfigurationProperties注解

安装swoole

php需要安装swoole扩展 swoole4.3.2 cd /usr/local/src/wget https://pecl.php.net/get/swoole-4.3.2.tgztar -zxvf swoole-4.3.2.tgzmv swoole-4.3.2 swoolecd swoole/usr/local/php/bin/phpize# 增加php配置./configure --enable-openssl --enable-swoole --enable-http2 --e…

layUI 学习记录

1 点击导航栏跳转页面 <!DOCTYPE html> <html> <head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1, maximum-scale1"><title>layout 后台大布局 - Layui</ti…

分享个网盘,个人觉得很不错!

金山网盘&#xff1a;http://k.wps.cn 可以在电脑上虚拟一个盘&#xff0c;你要上传下载删除文件&#xff0c;可以直接在本地电脑上操作&#xff0c;就像用自己硬盘的一个分区或是U盘一样&#xff0c;操作方便&#xff0c;但速度肯定没硬盘U盘快了&#xff0c;真正速度取决于你…

JSP 学习笔记 3

八jsp 九个内置对象1.内置对象的描述这就个内置对象都是servlet API的类或者接口的实例。JSP把他们都初始化了。2.九个内置对象分别是l application: javax.servlet.ServletContext的实例&#xff0c;代表JSP所属WEB应用本身&#xff0c;用于JSP叶面之间&#xff0c;或…

空间新闻模块CSS

#mod_10024 { /* 国内新闻模块 */ } #mod_10024 .modtl { /* 题头左 */ } #mod_10024 .modtc { /* 题头中 */ } #mod_10024 .modtr { /* 题头右 */ } #mod_10024 .modtit { /* 模块标题 */ } #mod_10024 a.modact img { /* "编辑图标" */ } #mod_10024 a.modact,#mod…

Cordova入门系列(三)Cordova插件调用

上一章我们介绍了cordova android项目是如何运行的&#xff0c;这一章我们介绍cordova的核心内容&#xff0c;插件的调用。演示一个例子&#xff0c;通过cordova插件&#xff0c;去调用摄像头。 一、插件的安装以及基本信息&#xff1a; 我们先在项目中安装调用摄像头的插件cor…

LVS 介绍 原理

一、 LVS简介 LVS是Linux Virtual Server的简称&#xff0c;也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目&#xff0c;它的官方站点是www.linuxvirtualserver.org&#xff08;版本很久不更新了&#xff09;。 现在LVS已经是 Linux标准内核的一部分…