python基础数据结构:序列、映射、集合
Python中常见的数据结构可以统称为容器(container)。序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的容器。
⼀、序列(列表、元组和字符串)
序列中的每个元素都有⾃⼰的编号。Python中有6种内建的序列。其中列表和元组是最常见的类型。其他包括字符串、Unicode字符串、buffer 对象和xrange对象。下⾯重点介绍下列表、元组和字符串。
1、列表
列表是可变的,这是它区别于字符串和元组的最重要的特点,⼀句话概括即:列表可以修改,⽽字符串和元组不能。
(1)、创建
通过下⾯的⽅式即可创建⼀个列表:
输出:
['hello', 'world']
[1, 2, 3]
可以看到,这中创建⽅式⾮常类似于javascript中的数组。
(2)、list函数
通过list函数(其实list是⼀种类型⽽不是函数)对字符串创建列表⾮常有效:
输出:
['h', 'e', 'l', 'l', 'o']
2、元组
元组与列表⼀样,也是⼀种序列,唯⼀不同的是元组不能被修改(字符串其实也有这种特点)。
、创建
(1)、创建
输出:
(1, 2, 3) ('jeffreyzhao', 'cnblogs') (1, 2, 3, 4) () (1,)
从上⾯我们可以分析得出:
a、逗号分隔⼀些值,元组⾃动创建完成;
b、元组⼤部分时候是通过圆括号括起来的;
c、空元组可以⽤没有包含内容的圆括号来表⽰;
d、只含⼀个值的元组,必须加个逗号(,);
(2)、tuple函数
tuple函数和序列的list函数⼏乎⼀样:以⼀个序列(注意是序列)作为参数并把它转换为元组。如果参数就算元组,那么该参数就会原样返回:
输出:
(1, 2, 3)
('j', 'e', 'f', 'f')
(1, 2, 3)
Traceback (most recent call last):
File "F:\Python\test.py", line 7, in
t4=tuple(123)
TypeError: 'int' object is not iterable
3、字符串
(1)创建
输出:
Hello world
H
H
e
l
l
o
w
o
r
l
d
(2)、格式化
format():
print(‘{0} was {1} years old when he wrote this book’. format(name,age) )
print(‘{} was {} years old when he wrote this book’. format(name,age) )
print(‘{name} was {age} years old when he wrote this book’. format(name=’Lily’,age=’22’) ) #对于浮点数“0.333”保留⼩数点后三位
python格式化输出formatprint(‘{0 : .3f}’.format(1.0/3) )
结果:0.333
#使⽤下划线填充⽂本,并保持⽂字处于中间位置
#使⽤^定义‘_____hello_____’字符串长度为11
print(‘{0 : ^_11}’.format(‘hello’) )
结果:_____hello_____
%:
格式化操作符的右操作数可以是任何东西,如果是元组或者映射类型(如字典),那么字符串格式化将会有所不同。
输出:
Hello,world
Hello,World
注意:如果需要转换的元组作为转换表达式的⼀部分存在,那么必须将它⽤圆括号括起来:
输出:
Traceback (most recent call last):
File "F:\Python\test.py", line 2, in
str1='%s,%s' % 'Hello','world'
TypeError: not enough arguments for format string
如果需要输出%这个特殊字符,毫⽆疑问,我们会想到转义,但是Python中正确的处理⽅式如下:
输出:100%
对数字进⾏格式化处理,通常需要控制输出的宽度和精度:
输出:
3.14
3.141593
3.14
个⼈感觉%有点复杂,还是format好⽤啊,只记format不⾏咩?
字符串格式化还包含很多其他丰富的转换类型,可参考官⽅⽂档。
4、通⽤序列操作(⽅法)
从列表、元组以及字符串可以“抽象”出序列的⼀些公共通⽤⽅法(不是你想像中的CRUD),这些操作包括:索引(indexing)、分⽚(sliceing)、加(adding)、乘(multiplying)以及检查某个元素是否属于序列的成员。除此之外,还有计算序列长度、最⼤最⼩元素等内置函数。
(1)索引
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论