在上一篇文章中,我们介绍了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. 每天一个linux命令-id,输出用户的uid、gid

    id命令可以输出用户真实有效的uid和gid,uid代表用户的唯一标识,gid代表用户组id,与用户是一对多的关系. 命令格式:     id [-gGnru] [用户名称]   除了id命令之外,还 ...

  2. 【Leetcode】【Easy】Plus One

    Given a non-negative number represented as an array of digits, plus one to the number. The digits ar ...

  3. Selenium2学习(二)-- 操作浏览器基本方法

    前面已经把环境搭建好了,这从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可视化工具,我们要学的是web ...

  4. Git warning push.default is unset

    warning: push.default is unset; its implicit value is changing in Git 2.0 from 'matching' to 'simple ...

  5. 108. Convert Sorted Array to Binary Search Tree (building tree with resursion)

    Given an array where elements are sorted in ascending order, convert it to a height balanced BST. Fo ...

  6. 多层感知机训练minist数据集

    MLP .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1p ...

  7. python time模块计算程序耗时

    import time start = time.clock() end = time.clock() consume_time = end - start

  8. [转]Android Studio启动时出现unable to access android sdk add-on list

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/50563122 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

  9. 【luogu P3390 矩阵快速幂】 模板

    题目链接:https://www.luogu.org/problemnew/show/P3390 首先要明白矩阵乘法是什么 对于矩阵A m*p  与  B p*n 的矩阵 得到C m*n 的矩阵 矩阵 ...

  10. 深入浅出C指针

    http://bbs.9ria.com/blog-164422-18039.html 初学者在学习C语言时,通常会遇到两个瓶颈,一个是“递归”,一个是“指针”.大学老师在讲述这两个知识点时通常都是照本 ...