在上一篇文章中,我们介绍了Python的一些控制结构,现在我们继续介绍剩下的 Python 控制结构。查看上一篇文章请点击:https://www.cnblogs.com/dustman/p/9972078.html

列表(List)
列表是一种用于保存一系列有序的集合,你可以想象你有一张购物清单,上面列出了需要购买的商品,在购物清单上你可能为每件物品都单独列一行。
你需要把它放在方括号里并让每一项都用逗号隔开,使用列表中的索引来访问列表中的特定项。

List = ["Hello","world","!"]
print(List[0])
print(List[1])
print(List[2])

运行结果:

>>>
Hello
world
!
>>>
索引的第一项为 0 不是 1,这和我们生活中实际情况有点不一样。

下面代码输出是什么?

nums = [1,2,3,4,5]
print(nums[1])

运行结果:

>>>
2
>>>

一个空列表是用一个空的方括号创建的。

empty_list = []
print(empty_list)

运行结果:

>>>
[]
>>>
大多数情况下,逗号不会出现在列表中的最后一项的后面。当然在那里防止一个逗号也是完全有效的语法。

通常列表符包括单种数据类型,但也可以包含几种不同的数据类型,列表里也能嵌套列表。

num = 3
things = ["string",0,[1,2,num],3.14]
print(things[1])
print(things[2])
print(things[2][1])

运行结果:

>>>
0
[1, 2, 3]
2
>>>
内嵌列表通常用于表示一个二位数组,因为 Python 缺少在其它语言中用于这种作用的多维数组。

下面代码是创建一个列表,并输出其第三项。

List = [20,21,22]
print(List[2])

运算结果:

>>>
22
>>>

如果你试图读取或者写入一个不存在的列表元素,你会得到一个 indexError 错误。
一些类型比如字符串能够被索引访问,用索引方式字符串的行为就像字符串里包含一个字符的列表。
对于其他不能索引的类型,例如整数,对其索引访问对导致 TypeError。

str = "Hello world!"
print(str[3])、

运行结果:

>>>
l
>>>

判断下面代码中哪一行会导致错误?

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

第四行代码出错,导致报 IndexError 错误。
列表运算符
列表里的列表元素可修改

num = [1,1,1,1]
num[2] = 14
print(num)

运行结果:

>>>
[1, 1, 14, 1]
>>>

加号 + 运算符可以把列表拼接在一起,星号 * 运算符可以将列表重复指定的次数。

num = [1,2,3]
print(num * 2)
print(num + [4,5,6])

运行结果:

>>>
[1, 2, 3, 1, 2, 3]
[1, 2, 3, 4, 5, 6]
>>>
列表和字符串在很多方面的行为都是相似的,字符串可以看作是不能更改的字符列表。

创建一个列表给其第二个元素重新赋值并打印整个列表。

num = [14,25,45]
num[1] = 22
print(num)

运行结果:

>>>
[14, 22, 45]
>>>

要检查一个元素是不是在列表里,可以使用 in 运算符。返回 True 表示该元素存在,否则返回 False

words = ["I","Like","Python","!"]
print("I" in words)
print("Python" in words)
print("Java" in words)

运行结果:

>>>
True
True
False
>>>
in 运算符还可以用于确定字符串是否是另一个字符串的子字符串。

要检查一个元素不在列表里使用 not 运算符。

nums = [1,2,3]
print(not 4 in nums)
print(4 not in nums)
print(not 1 in nums)
print(1 not in nums)

运行结果:

>>>
True
True
False
False
>>>

检查'z'是否在列表中。

nums = ['a','b','z']
if 'z' in nums:
print('Yes')

运行结果:

>>>
Yes
>>>

列表方法
要在列表尾部添加一个元素可以使用列表的 append 方法。

nums = [1,2,3]
nums.append(4)
print(nums)

运行结果:

>>>
[1, 2, 3, 4]
>>>
列表后面加点再加 append 是因为它是列表类的一种方法,类方法将在后面的文章中详细讲解。

要获取列表的长度,使用 len 函数。

nums = [1,2,3]
print(len(nums))

运行结果:

>>>
3
>>>
与 append 不同,len 是一个正常函数,而不是列表类的一个方法。

要想将对象插入列表还可以使用 insert 方法。不想 append 方法,它可以分配这个对象插入到哪个索引。

words = ["Python","fun"]
index = 1
words.insert(index, "is")
print(words)

运行结果:

>>>
['Python', 'is', 'fun']
>>>

index 方法被用在发现对象在哪个索引编号,返回从左到右首次发现的索引编号。如果列表里没有此对象做出 ValueError 错误。

words = ['a','b','c','d','e']
print(words.index('c'))
print(words.index('a'))
print(words.index('z'))

运行结果:

>>>
2
0
ValueError: 'z' is not in list
>>>
列表还有一些更有用的函数的方法:
max(list):返回列表里的最大值
min(list):返回列表里的最小值
list.count(obj):统计某个元素在列表中出现的次数
list.remove(obj):移除列表中某个值的第一个匹配项
list.reverse():反向列表中元素
list.pop():移除列表中的最后一个元素,并且返回该元素的值
list.sort([func]):对列表进行排序

添加 'z' 到列表的尾部并打印列表的长度。

List = []
List.append('z')
print(len(List))

运行结果:

>>>
1
>>>

range函数
range 函数创建一个包含顺序数字的对象,下面代码创建一个从 0 到小于 10 的列表。

nums = list(range(10))
print(nums)

运行结果:

>>>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>

上面代码调用了 list 方法强调类型转换。因为 range 函数本身会创建 Range 对象,如果要将其作为一个列表使用,则必须将其转换为列表。
range 函数接收一个参数时,它创建一个从 0 到小于参数的一个有序序列。
如果它接收两个参数,它创建一个从第一个参数开始到小于第二个参数的一个序列。

nums = list(range(1,4))
print(nums) print(range(10) == range(0,10))

运行结果:

>>>
[1, 2, 3]
True
>>>

range 函数默认每次产生有序序列算法是对序列尾数加 1 操作,但是如果其有第三个参数,那么产生序列但加的数就是以第三个参数为准。

nums = list(range(1,24,2))
print(nums)

运行结果:

>>>
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23]
>>>

for 循环
遍历一个列表中所有元素可以通过一个 while 循环和一个计数器变量来完成。

words = ["hello","world","Python","Java"]
count = 0
max_index = len(words) - 1
while count <= max_index:
word = words[count]
print(word + "!")
count = count + 1

运行结果:

>>>
hello!
world!
Python!
Java!
>>>
上面的实例遍历列表中的所有项,使用索引编号访问它们,并添加感叹句打印每一个索引项。

上面的用 while 的循环来遍历列表有点太费笔墨了。
Python 提供了一个更简单的方法,也是最常用的办法就是 for 循环。

words = ["hello","world","Python","Java"]
for word in words:
print(word + "!")

运行结果:

>>>
hello!
world!
Python!
Java!
>>>
Python 里的 for 循环像其他语言的 foreach 循环。

for 循环通常用于重复某些代码一定次数,下面是通过将 for 循环与 range 对象结合起来用。

for i in range(4):
print("hello!")

运行结果:

>>>
hello!
hello!
hello!
hello!
>>>
在 for 循环中使用 range 对象时,不需要调用 list 函数。因为不需要索引,所以不需要将它转换成列表。

小项目:创建一个计算器
学习玩 Python 控制结构,我们用 Python 来创建一个简单的程序:计算器,下面是程序的大概结构,我们需要完善它。
程序运行时,先打印程序接受的输入,然后接受用户输入。

输入 add 计算两个数字相加
输入 subtract 计算两个数字相减
输入 multiply 计算两个数字相乘
输入 divide 计算两个数字相除
输入 quit 退出程序
while True:
print("Make a choice")
print("Enter 'add' to add two nums")
print("Enter 'substact' to substact two nums")
print("Enter 'multiply' to multiply two nums")
print("Enter 'quit' to quit two nums")
user_input = input(":")
if user_input == "add":
...
elif user_input == 'subtract':
...
elif user_input == 'multiply':
...
elif user_input == 'divide':
...
elif user_input == 'quit':
break
else:
print("input error!")
程序用 if/elif 语句比较用户输入,无法匹配到选项时输出 "input error",用户输入 "quit" 时用 break 语句跳出循环。

程序的下部分是获取用户希望使用的数字。下面的代码为计算器的加法部分,其他部分也须编写类似的代码。

elif:
num1 = float(input("Enter a num:"))
num2 = float(input("Enter another num:"))

现在,当用户输入 "add" 程序提示用户输入两个数字并存储这两个输入到相应的变量里。

实际上如果用户在输入时输入非数字,此程序就会崩溃。我们将在后面的模块中讨论这个问题。

最后,程序计算用户输入的值并显示它。下面代码显示最终的完成部分。

elif user_input == "add":
num1 = float(input("Enter a num:"))
num2 = float(input("Enter another num:"))
result = str(num1 + num2)
print("The answer is" + result)

现在我们有一个程序,提示用户输入,然后计算并打印用户输入的两个数之和。

必须为其他分支编写类似的代码(用于减法、乘法和除法)。输出行 print 语句可以放在 if 语句之外,避免代码的重复。

“为着后来的回忆,小心着急地描绘你现在的图画!”

Python学习手册之控制结构(二)的更多相关文章

  1. 《Python学习手册》(二)

    <Python学习手册>(二) --类型和运算 数字 十六进制 八进制 二进制 0x 0o 0b hex() oct() bin() >>>int('10',2) 2 & ...

  2. Python学习手册之控制结构(一)

    在上一篇文章中,我们对 Python 进行了简单介绍和介绍了 Python 的基本语法,现在我们继续介绍 Python 控制结构. 查看上一篇文章请点击:https://www.cnblogs.com ...

  3. 《Python学习手册》读书笔记

    之前为了编写一个svm分词的程序而简单学了下Python,觉得Python很好用,想深入并系统学习一下,了解一些机制,因此开始阅读<Python学习手册(第三版)>.如果只是想快速入门,我 ...

  4. 《Python学习手册》读书笔记【转载】

    转载:http://www.cnblogs.com/wuyuegb2312/archive/2013/02/26/2910908.html 之前为了编写一个svm分词的程序而简单学了下Python,觉 ...

  5. Python学习手册(第4版) - 专业程序员的养成完整版PDF免费下载_百度云盘

    Python学习手册(第4版) - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:g7v1 作者简介 作为全球Python培训界的领军人物,<Python学习手册:第4版>作者M ...

  6. Python学习手册(第4版)PDF高清完整版免费下载|百度云盘

    Python学习手册(第4版)PDF高清完整版免费下载|百度云盘 提取码:z6il 内容简介 Google和YouTube由于Python的高可适应性.易于维护以及适合于快速开发而采用它.如果你想要编 ...

  7. 转载-《Python学习手册》读书笔记

    转载-<Python学习手册>读书笔记 http://www.cnblogs.com/wuyuegb2312/archive/2013/02/26/2910908.html

  8. global语句(python学习手册422页)

    # -*- coding: cp936 -*- #python 27 #xiaodeng #global语句(python学习手册422页) #实际上就是一个名为__builtin__的模块,但是必须 ...

  9. 参考学习《Python学习手册(第4版)》高清中文PDF+高清英文PDF+源代码

    看到第38章了,整体感觉解释详细,例子丰富:关于Python语言本身的讲解全面详尽而又循序渐进不断重复,同时详述语言现象背后的机制和原理:除语言本身,还包含编程实践和设计以及高级主题.边看边写代码.不 ...

随机推荐

  1. PHP 运行环境和服务器相关配置

    1.在DOS命令窗口输入 mysql -hlocalhost -uroot -p回车 进入mysql数据库, 其中-h表示服务器名,localhost表示本地:-u为数据库用户名,root是mysql ...

  2. 汽车后市场SWOT分析

    客户接待系统SWOT分析 版本  V0.1 所有人: 王超 S  客户接待系统符合市场的目前阶段需求.填补了市场的空白部分. W 市场推广的力度差异,市场由蓝海编成红海,多种厂商参与,创业团队不断进入 ...

  3. OpenSUSE 内核编译教程 (kernel 2.6.x)

    http://cn.opensuse.org/OpenSUSE_%E5%86%85%E6%A0%B8%E7%BC%96%E8%AF%91%E6%95%99%E7%A8%8B_(kernel_2.6.x ...

  4. Database 2 Day DBA guide_Chapter3

    Chapter 3: Getting Started with Oracle Enterprise Manager 第三章:开始oracle企业管理器. Purpose(目的) This chapte ...

  5. spring 四种数据源配置方式

    1.spring自带的数据源 DriverManagerDataSource XML代码: <bean id="dataSource" class="org.spr ...

  6. 从零开始Vue项目实战(一)-准备篇

    从前参与过一个react项目的代码编写,大神搭建的框架,我主要负责业务逻辑代码编写,现在回想起来似乎又什么都不会,现在为了巩固前端知识,决定用Vue来做这个项目的移动端网站,我本人Vue是从零开始的, ...

  7. 2018_MCM_ICM_C

  8. UOJ 48 次最大公约数

    次最大公约数 = gcd / 其中一个数质因数中最小的. gcd(42,12) = 6;    div(42) = 2*3*7   div(12) = 2^2*3 sgcd(42,12) = 6 / ...

  9. 【[CTSC2000]冰原探险】

    noip前练一下码力还是非常有前途的 这道题本来就是想写个大暴力弃疗的,所以直接强上暴力浑身舒爽 结果发现要不是判重的时候脑残了,就能\(A\)了 没什么好说的呀,就是每一次都暴力\(O(n)\)往上 ...

  10. [USACO09FEB] Revamping Trails 【分层图+Dijkstra】

    任意门:https://www.luogu.org/problemnew/show/P2939 Revamping Trails 题目描述 Farmer John dutifully checks o ...