在python中、列表是什么序列_Python 中的序列(列表、元祖、字符串)

1. 数据结构与序列

数据结构是,以某种方式(比如符号)组合起来的数据元素,比如数、字符乃至其他数据结构的集合。

在 Python 中,最基本的数据结构为序列。序列中的每个元素都有编号,即位置或索引,其中第一个元素的索引为 0,第二个为 1,类推。。。

Python 中比较常用的序列有三种,列表、元祖、还有就是字符串。我们必须知道,列表是可以修改的,元祖不可以(用于保存一些不能够修改的初始变量个人感觉不错,有些场景可能作为字典键。),还有啊,再说一遍,序列还可以包含其他序列!

Python 还支持一种数据结构的基本概念,叫做容器,容器基本上可以包含任何对象。两种主要的容器是序列(列表、元祖)和映射(字典),序列中每个元素都有编号,映射中每个元素都有键。另外一种比较特殊的容器就是集合(set)(既不是序列也不是映射)。

2. 对序列的通用操作

Python 中序列有一些通用操作方式,比如索引、切片、相加、相乘和成员资格检查。另外的,还有一些 Python 的内置函数,用于确定序列的长度以及找出序列中最大和最小的元素。

索引:

序列中的每一个元素都有编号 —— 用 0 开始递增,称为索引,当使用负数索引时,Python 将从最右边开始往左数,-1 是最后一个元素的位置。

Python 不同于 Java ,Python 的字符串就是由字符组成的序列,Python 没有专门用于表示字符的类型,一个字符就是只包含一个元素的字符串。

# 对序列进行索引操作。

string = 'Hello World !!!'

string[0]

Out[4]: 'H'

string[-1]

Out[5]: '!'

切片:

通过对序列进行切片,可以访问指定索引范围内的元素。值得注意的是,切片通过指定的索引来进行,如有两个索引,则其中第一个索引指定的元素包含在切片内,第二个索引指定元素不包含在切片内。

# 对序列进行切片操作。

string = 'Hello World !!!'

string[0 : 12]

Out[7]: 'Hello World '

string[-3 : -1]

Out[11]: '!!'

string[-3 : ]

Out[21]: '!!!'

string[:]

Out[22]: 'Hello World !!!'

string[:-3]

Out[23]: 'Hello World '

# 对步长进行设置。

string[::2]

Out[24]: 'HloWrd!!'

序列相加:

a = [1, 2, 3]

b = [1, 2, 3]

a + b

Out[29]: [1, 2, 3, 1, 2, 3]

乘法操作:

a = [1]

b = a * 5

b

Out[32]: [1, 1, 1, 1, 1]

成员资格检查:(使用运算符 in)

s = 'String ...'

's' in s

Out[36]: False

'S' in s

Out[37]: True

3. 列表(list)

Python 中的列表是可变的,下面来看下对列表的基本操作。

# 使用 list 类将字符串转换成列表。

string = list('Hello world !!!')

# 将列表转换成字符串。

''.join(string)

Out[41]: 'Hello world !!!'

string[-1] = '?'

列表中的一些常用方法:

append :将一个对象附加到列表的末尾。

clear :就地清空列表的内容。

copy :对列表内容进行复制。

count :用于计算指定元素在列表中出现的次数。

extend :方法可以将多个值附加到列表的末尾。

index :用于在列表中查找指定值第一次出现的索引。

insert :用于将一个对象插入到列表中的指定位置。

pop :方法从列表末尾删除一个元素并返回。

remove :用于在列表中删除第一个为指定值的元素。

reverse :按照相反的顺序排列列表中的元素。

sort :对列表进行就地排序,而不是返回列表副本。

4. 元祖(tuple)

跟列表不同,元祖属于不能够修改的序列。只要将值进行逗号分隔,就能自动创建一个元祖。由于元祖也属于序列,因此也能够对元祖进行一系列的序列操作。

tuple('Hello World !!!')

Out[48]: ('H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', ' ', '!', '!', '!')

5. 字符串(str)

我们知道,字符串也是属于序列的一种,所有标准的序列操作都适用于字符串,但由于字符串是不可变的,因此所有的元素赋值跟切片赋值都是非法的。

# 经典的对字符串进行格式设置。

'My name is %s , i am %d years old .' % ('GYS', 12)

Out[62]: 'My name is GYS , i am 12 years old .'

# 对浮点数进行三位小数的保留。

'My name is %s , i am %.3f years old .' % ('GYS', 12.123123)

Out[65]: 'My name is GYS , i am 12.123 years old .'

下面来看下 Python3 中对字符串进行格式设置的方法 format() 。

'My name is {}, i am {} years old.'.format('gys', 18)

Out[66]: 'My name is gys, i am 18 years old.'

'My name is {1}, i am {0} years old.'.format('gys', 18)

Out[67]: 'My name is 18, i am gys years old.'

'My name is {}, i am {:.2f} years old.'.format('gys', 18.123)

Out[68]: 'My name is gys, i am 18.12 years old.'

设置字符串格式详解:

对于要进行格式设置的字符串,简单来说就是对字符串调用 format 方法,并提供要设置其格式的值(花括号括起来的为替换字段,若果要在最终结果中包含花括号,可在字符串中使用两个花括号,即 {{}} 来进行指定)。

在格式字符串中,替换字段由字段名、转换标志、格式说明符三部分组成,其中的每个部分都是可选的。

字段名:索引或标识符,指出要设置哪个值的格式并使用结果来替换该字段。除了指定特定值外,还可以指定值的特定部分,比如列表元素。

转换标志:跟在感叹号后面的单个字符。当前支持的转换形式有 r(表示 repr)、s(表示 str)跟 a(表示 ascii )。

格式说明符:跟在冒号后面的表达式,格式说明符能够详细的指定最终的格式,比如(字符串、浮点数),当然也可以设置字段宽度跟数的精度。

字符串格式设置中的类型符说明:

b :将整数表示为二进制数。

c :将整数解读为 Unicode 码点。

d :将整数视为十进制数进行处理(默认)。

e :使用科学表示法来表示。

f :将数值型数据表示为浮点数。

F :与 f 相同,但对于特殊值(nan 和 inf),使用大写表示。

o :将整数表示为八进制数。

s :保持字符串的格式不变(默认)。

x :将整数表示为十六进制数并使用小写字母。

X :与 x 相同,但使用大写字母。

% :将数表示为百分比值。

# 感受一下字符串方法,format 的使用。

'{{ This is test String ... }}'.format()

Out[69]: '{ This is test String ... }'

'{} {s1} {s2} {}'.format(1, 2, s1 = 5, s2 = 6)

Out[72]: '1 5 6 2'

'{1} {s1} {s2} {0}'.format(1, 2, s1 = 5, s2 = 6)

Out[73]: '2 5 6 1'

'{} {li[1]}'.format(1, li = [1, 2])

Out[74]: '1 2'

'{s!r} {s!s} {s!a}'.format(s = '我')

Out[77]: "'我' 我 '\\u6211'"

'Number is {num:f}'.format(num = 10.123)

Out[80]: 'Number is 10.123000'

'Number is {num:b}'.format(num = 10)

Out[82]: 'Number is 1010'

看一下宽度、精度跟千分位分隔符的使用:

# 数跟字符串的对其方式不同。

'Num: {num:6}'.format(num = 3)

Out[83]: 'Num: 3'

'Str: {str:6}'.format(str = 'GYS')

Out[84]: 'Str: GYS '

# 对精度进行指定。

'Π is : {:.6f}'.format(3.1415926535)

Out[85]: 'Π is : 3.141593'

'{:.5}'.format('My name is gys...')

Out[86]: 'My na'

# 千分位分隔符。

'Number is : {:,}'.format(1000000000)

Out[87]: 'Number is : 1,000,000,000'

符号、对齐跟填充:

之前尝试过,字符串跟数的默认对齐方式不同。如果需要指定左对齐、右对齐或居中,可以分别使用 <、> 跟 ^ ,同时在更改对齐方式的时候,只需要在指定宽度跟精度的数面前添加一个标志(如$、0),就可以进行字符串的填充。

如果要给数加上符号,那么可以使用说明符+(默认为 - )。如果要给指定类型的数(如八进制、十六进制)加上前缀,那么可以通过 # 号进行指定。

# 居中并通过 $ 进行填充。

'{:$^15.3f}'.format(0.001235)

Out[101]: '$$$$$0.001$$$$$'

# 对不同的进制加上前缀。

'{:#b}'.format(123)

Out[102]: '0b1111011'

'{:#o}'.format(123)

Out[103]: '0o173'

'{:+} {:+}'.format(1.23, -1.2)

Out[105]: '+1.23 -1.2'

一些常用的字符串方法:

center :方法默认通过在两边添加填充字符让字符串居中(填充字符默认为空格)。

find :用于在字符串中查找子串,如果找到,就返回子串的第一个字符的索引。否则返回 -1 。

join :用于合并序列中的元素。

lower :返回字符串的小写版本。

title :将字符串转换成单词首个字母大写。

replace :将指定子串都替换为另一个字符串。

split :用于将字符串拆分为序列。

strip :用于将字符串开头和末尾的空白删除,并返回删除后的结果。

translate :方法只能够进行单字符的替换,但是能够同时替换多个单字符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值