Python进阶教程001内置数据类型
关于Python的基础知识已经告一段落了,我们接下来深入的研究Python的使用方法,以及以后将要使用到的类库。
格式化字符串
Python是支持字符串的格式化输出的,在之前的学习中我们也遇到过和使用过,不过我们没有深入的研究和讨论,只是一笔带过,今天我们好好的研究一下字符串的格式化。可能会用到非常复杂的表达式,但是最基本的用法是将一个值插入到一个有字符串格式符%s的字符串中。
字符串的格式化
>>> k = "uid"
>>> v = "sa"
>>> "%s=%s" % (k,v)
'uid = sa'
我们可以看出整个表达式的结果是一个字符串。第一个%s被变量k的值替换;第二个%s的值被变量v的值替换。在字符串中的其它字符都按照原样打印输出。
你可能在想:做一个字符串的拼接需要这么复杂吗?没有问题,的确很麻烦,只不过我们做的不仅仅是字符串的连接,在这个语句下,它不仅仅是格式化,同时也进行了强制类型转换。

字符串格式化与字符串连接的比较
>>> uid = "sa"
>>> pwd = "secret"
>>> print(pwd + "is not a good password for " + uid) 1
secretis not a good password for sa
>>> print("%s is not a good password for %s" % (pwd , uid)) 2
secret is not a good password for sa
>>> userCount = 6
>>> print("Users connected : %d" % (userCount,)) 3 4
Users connected : 6
>>> print("Users connected : %d" % (userCount)) 5
Users connected : 6
>>> print("Users connected : "+ userCount)
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
print("Users connected : "+ userCount)
TypeError: can only concatenate str (not "int") to str
>>>
1.+是字符串的连接操作符。
2.在这个简单的例子中,字符串格式化实现与连接的结果。
3.(userCount, ) 是一个只包含一个元素的 tuple。是的, 语法有一点奇怪, 但是使用它的理由就是:显示地指出它是一个 tuple, 而不是其他。实际上, 当定义一个 list, tuple 或 dictionary 时, 您可以总是在最后一个元素后面跟上一个逗号, 但是当定义一个只包含一个元素的 tuple 时逗号是必须的。如果省略逗号, Python 不会知道 (userCount) 究竟是一个只包含一个元素的 tuple 还是变量 userCount 的值。
4.字符串格式化通过将 %s 替换成 %d 即可处理整数。
5.试图将一个字符串同一个非字符串连接会引发一个异常。与字符串格式化不同, 字符串连接只能在被连接的每一个都是字符串时起作用。
数值的格式化
>>> print("Today's stock price: %f" % 50.123) 1
Today's stock price: 50.123000
>>> print("Today's stock price: %.2f" % 50.123) 2
Today's stock price: 50.12
>>> print("Change since yesterday: %+.2f" % 1.333) 3
Change since yesterday: +1.33
>>>
1.%f 格式符选项被认为是一个十进制浮点数, 不指定精度时打印 6 位小数。
2.使用包含 ".2" 精度修正符的 %f 格式符选项将只打印 2 位小数。
3.您甚至可以混合使用各种修正符。 添加 + 修正符用于在数值之前显示一个正号或负号。 注意 ".2" 精度修正符仍旧在他原来的位置, 用于只打印 2 位小数。
映射list
Python的强大特性是其针对list的解析,它提供了一种紧凑的方法,可以通过对list中的每个元素应用一个函数,从而将list映射成另一个list。
>>> li = [1,8,9,3]
>>> [lis*2 for lis in li] 1
[2, 16, 18, 6]
>>> li 2
[1, 8, 9, 3]
>>> li = [lis*2 for lis in li] 3
>>> li
[2, 16, 18, 6]
>>>
1.li是我们将要映射的list,Python将li中的每个元素都循环遍历,然后对每个元素做一个操作返回到list中形成一个新的list。
2.这里我们知道为什么说是形成一个新的list,因为原来的li这个list没有发生改变。
3.但是如果将新生成的list赋值给li就会改变原有的list。
keys,value,和iteams函数
>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
>>> params.keys() 1
dict_keys(['server', 'database', 'uid', 'pwd'])
>>> params.values() 2
dict_values(['mpilgrim', 'master', 'sa', 'secret'])
>>> params.items() 3
dict_items([('server', 'mpilgrim'), ('database', 'master'), ('uid', 'sa'), ('pwd', 'secret')])
>>>
1.keys方法返回一个所有键的list。
2.values方法返回一个所有值的list。
3.items 方法返回一个形如 (key, value) 的 tuple 的 list。这个 list 包括 dictionary 中所有的数据。
连接list与分割字符串
>>> ";".join(["%s=%s"%(k,v) for k,v in params.items()])
'server=mpilgrim;database=master;uid=sa;pwd=secret'
在我们继续之前有一个有趣的地方。我一直在重复函数是对象, 字符串是对象, 每个东西都是对象的概念。您也许认为我的意思是说字符串 值 是对象。但是不对, 仔细地看一下这个例子, 您将会看到字符串 ";" 本身就是一个对象, 您在调用它的 join 方法。
总之, join 方法将 list 中的元素连接成单个字符串, 每个元素用一个分号隔开。分隔符不必是一个分号;它甚至不必是单个字符。它可以是任何字符串。
注意:
join 只能用于元素是字符串的 list; 它不进行任何的类型强制转换。连接一个存在一个或多个非字符串元素的 list 将引发一个异常。
分割字符串
>>> li = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> s = ";".join(li)
>>> s
'server=mpilgrim;uid=sa;database=master;pwd=secret'
>>> s.split(";") 1
['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> s.split(";",1) 2
['server=mpilgrim', 'uid=sa;database=master;pwd=secret']
>>>
1.split 与 join 正好相反, 它将一个字符串分割成多元素 list。 注意, 分隔符 (“;”) 被完全去掉了, 它没有在返回的 list 中的任意元素中出现。
2.split 接受一个可选的第二个参数, 它是要分割的次数。 (可选参数,我们之前讲过)
Python进阶教程001内置数据类型的更多相关文章
- Python的四个内置数据类型list, tuple, dict, set
Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set.这里对他们进行一个简明的总结. List ...
- Python中内置数据类型list,tuple,dict,set的区别和用法
Python中内置数据类型list,tuple,dict,set的区别和用法 Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, ...
- python计算非内置数据类型占用内存
getsizeof的局限 python非内置数据类型的对象无法用sys.getsizeof()获得真实的大小,例: import networkx as nx import sys G = nx.Gr ...
- Python内置数据类型之Dictionary篇
1.查看函数XXX的doc string. Python的函数是有属性的,doc string便是函数的属性.所以查看函数XXX的属性的方法是模块名.XXX.__doc__ 2.模块的属性 每个模块都 ...
- Python内置数据类型总结
python的核心数据类型:(很多语言之提供了数字,字符串,文件数据类型,其他形式的数据类型都以标准库的形式表示 也就是用之前需要import ) ,但是python有很多都是内置的,不需要impor ...
- Python笔记004-Python最基本内置数据类型和运算符
第二章(1)Python编程基础概念 1. 最基本内置数据类型和运算符 每个对象都有类型,Python 中最基本的内置数据类型: 1. 整数 整数,2345 ,10 ,50 2. 浮点型 小数,3.1 ...
- Python作业---内置数据类型
实验2 内置数据类型 实验性质:验证性 一.实验目的 1.掌握内置函数.列表.切片.元组的基本操作: 2.掌握字典.集合和列表表达式的基本操作. 二.实验预备知识 1.掌握Python内置函数的基/本 ...
- 二、JAVA基本数据类型:内置数据类型,引用类型
变量的值存储在内存中,内存管理系统通过变量的类型分配存储空间,且该空间只能存储该类型数据,通过定义不同的变量,在内存中储存不同类型的数据. JAVA的两大数据类型 1. 内置数据类型 2.引用数据类型 ...
- 笔记-pyton内置数据类型
笔记-pyton内置数据类型 1. 简介 The principal built-in types are numerics, sequences, mappings, classes, i ...
随机推荐
- http-server安装及运行
vue项目打包后会生成一个dist目录,我们想要直接运行dist目录...除了复制静态文件到服务器nginx目录下,然后启动nginx来启动项目, 另外一个办法就是安装http-server 直接启动 ...
- 漫谈Linux标准的文件系统(Ext2/Ext3/Ext4)
Ext 全称Linux extended file system, extfs,即Linux扩展文件系统,Ext2就代表第二代文件扩展系统,Ext3/Ext4以此类推,它们都是Ext2的升级版,只不过 ...
- java的poi技术读取和导入Excel实例
本篇文章主要介绍了java的poi技术读取和导入Excel实例,报表输出是Java应用开发中经常涉及的内容,有需要的可以了解一下. 报表输出是Java应用开发中经常涉及的内容,而一般的报表往往缺乏通用 ...
- 永久更改pip源和创建虚拟环境
一.永久更改pip源 1.windows 编辑%APPDATA%/pip中的pip.ini(若无则新建): C:\Users\v_xmmxhli λ cd %APPDATA%/pip C:\Users ...
- redis 初识
架构 sharding redis 集群是主从式架构,数据分片是根据hash slot(哈希槽来分布) 总共有16384个哈希槽,所以理论上来说,集群的最大节点(master) 数量是16384个.一 ...
- NavigationViewDemo【和DrawerLayout搭配使用实现侧滑导航视图界面】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 主要记录NavigationView的使用,而一般情况下NavigationView是和DrawerLayout搭配使用的,还有To ...
- Ubuntu:命令行下浏览网页
前述 兴起,试一下不用图形化界面浏览 安装w3m 直接进入root账号 apt-get install w3m 检验是否成功 w3m www.baidu.com 就这样成功的进入baidu了,纯文本模 ...
- DotNetCore跨平台~EFCore2.0连接Mysql的烦恼-已解决
回到目录 对于传统的nuget包,我们习惯上用官方或者大型组织的,因为它们比较考靠谱,但就在前两天.net core2.0发布后,我把efcore也升级到2.0了,mysql.EfCore也升级到支持 ...
- LindDotNetCore~添加路由前缀
回到目录 路由前缀就是我们所说的api/values里的api,这里的api可以用其它具体含义的字符表示,如Shop,Order,Game,它可以表示一个个模块,这一般在单体架构里;也可以是一个个小服 ...
- 10分钟明白对偶建模法 / +Leampms的“主模型建模”和“对偶模型建模” 之 —— 三类最短路径问题
摘要 对偶模型建模是非常有独特的一种建模方式 —— 当问题本身要求指标极小的情况下,对偶模型表现为求极大.本文给出三种最短路径问题的线性规划/混合整数规划模型,其中的第三类最短路径问题采用对偶建模方法 ...