据廖雪峰python3教程----python学习第三天

简介:

格式化输出


Python中的格式化输出与C语言是一致的都可以用 % 来实现 eg:

1
2
3
4
>>>  'hello,%s' % 'world'
'hello,world'
>>>  'Hi,%s,you have $%d.' % ( 'XiaoMing' , 1000 )
'Hi,XiaoMing,you have $1000.'



% 运算符是用来格式化字符串的。在字符串内部, %s 表示用字符替换,%d表示用整数替换,有几个 %? 占位符,后面就跟几个变量

或者值,顺序要对应好。如果这有一个 %? , 括号可以省略。

%d 整数
%f 浮点数
%s 字符串

%x

十六进制数


其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数

1
2
3
4
>>>  '%2d-%02d' % ( 3 , 1 )
'3-01'
  >>>  '%.2f' % 3.1415926
'3.14'


%s 可以将任何数据类型转化为字符串

1
2
>>>  'Age:%s.Grender:%s' % ( 25 , True )
'Age:25.Grender:True'


字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%

1
2
>>>  'growth rate: %d %%' % 7
'growth rate: 7 %'




练习


小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,并用字符串格式化显示出'xx.x%',只保留小数点后1位:

1
2
3
4
5
>>> s1 = 72
>>> s2 = 85
>>> r = (s2 - s1) / s1 * 100
>>>  print ( '%.2f%%' % r)
18.06 %





使用list和tuple


list


Python内置的一种数据类型是列表:list。list是一种有序的集和,可以随时添加和删除其中的元素。

比如,列出同学的名字就可用 list 表示

1
2
3
>>> classmates  =  [ 'XiaoHong' , 'LiSi' , 'XiaoMing' ]
>>> classmates                            
[ 'XiaoHong' 'LiSi' 'XiaoMing' ]

 

变量 classmates 就是一个 list 变量 可以用 len() 获得 list 元素的个数

1
2
  >>>  len (classmates)
3

    

用索引来访问list中的每一个元素,索引从0开始

1
2
3
4
5
6
7
8
9
>>> classmates[ 0 ]
'XiaoHong'
>>> classmates[ 1 ]
'LiSi'
>>> classmates[ 2 ]
'XiaoMing'
>>> classmates[ 3 ]
Traceback (most recent call last):   File  "<stdin>" , line  1 in  <module>
IndexError:  list  index out of  range

当给出的索引超出范围时,python会给出错误报告,索引的最大值为 : len(classmates)-1


如果要去倒数第一个list元素 可以使用:

1
2
3
4
5
6
7
8
9
>>> classmates[ - 1 ]
'XiaoMing'
>>> classmates[ - 2 ]
'LiSi'
>>> classmates[ - 3 ]
'XiaoHong'
>>> classmates[ - 4 ]
Traceback (most recent call last):   File  "<stdin>" , line  1 in  <module>
IndexError:  list  index out of  range

超出范围时,python同样会给出一个错误报告.



list 是一个可变的有序表,所以,可以往list中追加元素到末尾:

1
2
3
>>> classmates.append( 'Xiaochun' )
>>> classmates
[ 'XiaoHong' 'LiSi' 'XiaoMing' 'Xiaochun' ]


也可以把元素插入指定的位置,比如索引号为 1 的位置:

1
2
3
4
5
6
>>> classmates.insert( 1 , 'XiaoQiang' )
>>> classmates
[ 'XiaoHong' 'XiaoQiang' 'LiSi' 'XiaoMing' 'Xiaochun' ]
>>> classmates.insert( 3 , 'XiaoLv' )
>>> classmates
[ 'XiaoHong' 'XiaoQiang' 'LiSi' 'XiaoLv' 'XiaoMing' 'Xiaochun' ]


要删除list末尾的元素,用pop(i)方法,其中i是索引位置:

1
2
3
4
>>> classmates.pop( 2 )
'LiSi'
>>> classmates
[ 'XiaoHong' 'XiaoQiang' 'XiaoLv' 'XiaoMing' 'Xiaochun' ]



要把某个元素换成别的元素,可以直接赋值给对应的索引位置:

1
2
3
4
5
6
>>> classmates  =  [ 'XiaoHong' , 'LiSi' , 'XiaoMing' ]
>>> classmates
[ 'XiaoHong' 'LiSi' 'XiaoMing' ]
>>> classmates[ 1 ] = 'WangWu'
>>> classmates
[ 'XiaoHong' 'WangWu' 'XiaoMing' ]


list 里面的元素类型也可以不相同:

1
2
3
>>> L  =  [ 'nice' , True , 123 ]
>>> L
[ 'nice' True 123 ]


list 的元素也可以是另外一个 list :

1
2
3
4
5
>>> a =  [ 'python' , 'java' ,[ 'asp' , 'php' , 1111 ], 'learn' ]
>>> a
[ 'python' 'java' , [ 'asp' 'php' 1111 ],  'learn' ]
>>>  len (a)
4


要注意a只有4个元素,其中a[2]又是一个list,如果拆开写就更容易理解了:

1
2
3
4
>>> s = [ 'asp' , 'php' , 1111 ]
>>> a =  [ 'python' , 'java' ,s, 'learn' ]
>>> a
[ 'python' 'java' , [ 'asp' 'php' 1111 ],  'learn' ]


要拿到'php'可以写p[1]或者s[2][1],因此s可以看成是一个二维数组,类似的还有三维、四维……数组,不过很少用到。


如果一个list中一个元素也没有,就是一个空的list,它的长度为0:

1
2
3
>>> l = []
>>>  len (l)
0




tuple



另一种有序列表叫元组:tuple. tuple 与 list 类似,但是 tuple 一旦初始化就不能修改,eg:

1
2
3
>>> classmates = ( 'xiaoming' , 'xiaoqiang' , 'xiaohong' )
>>> classmates
( 'xiaoming' 'xiaoqiang' 'xiaohong' )


现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0]classmates[-1],但不能赋值成另外的元素。

1
2
3
4
5
6
7
>>> classmates[ 1 ]
'xiaoqiang'
>>> classmates[ - 1 ]
'xiaohong'
>>> classmates[ 1 ] = 'xiaoxin'
Traceback (most recent call last):   File  "<stdin>" , line  1 in  <module>
TypeError:  'tuple'  object  does  not  support item assignment



不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,比如:

1
2
3
>>> t = ( 1 , 2 )
>>> t
( 1 2 )


如果要定义一个空的tuple,可以写成()

1
2
3
>>> t = ()
>>> t
()


但是,如果只有一个元素的tuple,如果你这么定义:

1
2
3
>>> t = ( 1 )
>>> t
1

定义的不是 tuple ,是 1 这个数!  这是因为这个()即可表示tuple,又可以表示数学里的小括号,这就产生了歧义,因此,

python 规定,这种情况下小括号计算,计算结果就是1.


所以,只有1个元素的 tuple 定义时 必须加一个逗号,来消除歧义:

1
2
3
>>> t = ( 1 ,)
>>> t
( 1 ,)

python 在显示只有一个元素的tuple时,也会在后面加上一个 逗号 ,避免误解为 数学计算上的括号


最候来看一个“可变的‘tuple’”:

1
2
3
4
5
>>> t = ( 'a' , 'b' ,[ 'A' , 'B' ])
>>> t[ 2 ][ 0 ] = 'X'
>>> t[ 2 ][ 1 ] = 'Z'
>>> t
( 'a' 'b' , [ 'X' 'Z' ])


这个tuple定义的时候有3个元素,分别是 ‘a’,‘b’和一个 list。 不是说tuple一旦定义后就不可变了吗?怎么后来又变了?


别急,我们先看看定义的时候tuple包含的3个元素:

wKioL1btUHbgT2oWAAAaeqO2l88208.png

spacer.gif

当我们把list的元素'A''B'修改为'X''Y'后,tuple变为:

wKioL1btUIrS2OyxAAAao5cU28I540.png

spacer.gif

表面上看,tuple的元素变了,实际上是list的元素变了 ,tuple所谓的“不变”是说,tuple的每个元素,只想永远不变,

即指向‘a’,就不能变成指向‘b’,指向一个 list 就不能改变指向其他对象,但指向这个 list 本身是会变的。

理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。


练习


请用索引取出下面list的指定元素:

L = [
    ['Apple', 'Google', 'Microsoft'],
    ['Java', 'Python', 'Ruby', 'PHP'],
    ['Adam', 'Bart', 'Lisa']

]

# 打印Apple:
print(?)
# 打印Python:
print(?)
# 打印Lisa:

print(?)


1
2
3
4
5
6
7
8
9
10
11
>>> L  =  [
...     [ 'Apple' 'Google' 'Microsoft' ],
...     [ 'Java' 'Python' 'Ruby' 'PHP' ]
,...     [ 'Adam' 'Bart' 'Lisa' ]
... ]
>>>  print (L[ 0 ][ 0 ])
Apple
>>>  print (L[ 1 ][ 1 ])
Python
>>>  print (L[ 2 ][ 2 ])
Lisa



本文转自 nw01f 51CTO博客,原文链接:http://blog.51cto.com/dearch/1752954,如需转载请自行联系原作者
相关文章
|
11天前
|
Linux 网络安全 Python
linux centos上安装python3.11.x详细完整教程
这篇文章提供了在CentOS系统上安装Python 3.11.x版本的详细步骤,包括下载、解压、安装依赖、编译配置、解决常见错误以及版本验证。
81 1
linux centos上安装python3.11.x详细完整教程
|
9天前
|
Python Windows
python入门保姆级教程 | 13
python入门保姆级教程 | 13
|
10天前
|
Shell Linux Python
python执行linux系统命令的几种方法(python3经典编程案例)
文章介绍了多种使用Python执行Linux系统命令的方法,包括使用os模块的不同函数以及subprocess模块来调用shell命令并处理其输出。
13 0
|
10天前
|
调度 数据库 Python
python中APScheduler的使用详解(python3经典编程案例)
文章详细讲解了在Python中使用APScheduler来安排和执行定时任务的方法,包括不同调度器的配置与使用场景。
34 0
|
10天前
|
数据挖掘 Python
用python的tushare模块分析股票案例(python3经典编程案例)
该文章提供了使用Python的tushare模块分析股票数据的案例,展示了如何获取股票数据以及进行基本的数据分析。
12 0
|
10天前
|
存储 数据库 Python
python的对象数据库ZODB的使用(python3经典编程案例)
该文章介绍了如何使用Python的对象数据库ZODB来进行数据存储,包括ZODB的基本操作如创建数据库、存储和检索对象等,并提供了示例代码。
16 0
|
10天前
|
调度 Python
python3 协程实战(python3经典编程案例)
该文章通过多个实战案例介绍了如何在Python3中使用协程来提高I/O密集型应用的性能,利用asyncio库以及async/await语法来编写高效的异步代码。
11 0
|
10天前
|
安全 Java 调度
python3多线程实战(python3经典编程案例)
该文章提供了Python3中多线程的应用实例,展示了如何利用Python的threading模块来创建和管理线程,以实现并发执行任务。
12 0
|
10天前
|
调度 Python
python3多进程实战(python3经典编程案例)
该文章提供了Python3中使用多进程的实战案例,展示了如何通过Python的标准库`multiprocessing`来创建和管理进程,以实现并发任务的执行。
30 0
|
10天前
|
并行计算 Java API
写出高效率python的90个方法,附案例(python3经典编程案例)
该文章提供了90个提高Python编程效率的方法及案例,旨在帮助开发者编写更加高质量和优化的Python代码。
14 0
下一篇
无影云桌面