由于最近在刷Leetcode题,遇到了一些基本概念不是很理解的地方,所以需要补一下基本知识。因此,以下是本人查阅资料,自己总结的一些关于列表(List)、元组(Tuple)和字符串(String)的基本概念。
理解python中的序列(列表、元组和字符串)
文章预览:
1.1 基本概念
在python中常用到的数据结构一般为序列,我们在编程的时候几乎都会用到序列。序列中的每个元素都有编号,即索引,第一个元素的索引为0,以此类推,而用负索引来表示序列末尾元素的位置
序列主要包括:列表、元组和字符串等。(这三种最常见)
- 1)基本格式如下:列表一般用
[]
、元组一般用()
、字符串一般用" "
来表示,注意它们表示方式的差别。
l = [1,2,3,4,5] #列表
t = (5,4,3,2,1)#元组
s = "Hello" #字符串
- 2)列表与元组、字符串的差别:列表可以修改,而元组和字符串不可以。
- 3)序列都可以使用索引、切片、相加、相乘和成员资格检查等操作。
1.1.1 索引(index)
给定一个序列,返回指定索引位置的元素。如下所示
l = [1,2,3,4,5] #列表
t = (5,4,3,2,1)#元组
s = "Hello" #字符串
print(l[0],t[0],s[0]) #索引操作,输出它们的第一个元素
print(l[-1],t[-1],s[-1]) #索引操作,输出它们的倒数第一个元素
输出:
1 5 H
5 1 o
1.1.2 切片(slicing)
给定一个序列,可以用切片来访问指定范围的元素。并且用冒号:
隔开。(这部分在另一篇博文有详细介绍)
如下所示:
l = [1,2,3,4,5] #列表
t = (5,4,3,2,1)#元组
s = "Hello" #字符串
print(l[1:3]) #切片操作,返回列表索引为1到索引为2的所有元素(不包括右端的索引3)
print(t[0:2]) #切片操作,返回元组索引为0到索引为1的所有元素
print(s[2:4]) ##切片操作,返回字符串索引为2到索引为3的所有元素
输出:
[2,3]
(5,4)
ll
1.1.3 相加
记住,序列的相加并不是数学意义上的加法,而是将它们进行拼接,并且相加只能对同一类型的序列进行相加。如下所示
l = [1,2,3,4,5] #列表
t = (5,4,3,2,1)#元组
s = "Hello" #字符串
print(l+l) #相加操作,返回列表拼接本身后形成的新列表
print(t+t) #相加操作,返回元组拼接本身后形成的新元组
print(s+s[2]) ##相加操作,返回字符串拼接指定元素后的新字符串
输出:
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
(5, 4, 3, 2, 1, 5, 4, 3, 2, 1)
Hellol
1.1.4 相乘
与相加类似,都是拼接的意思。只是多次重复拼接这个序列,形成新序列。如下所示
l = [1,2,3,4,5] #列表
t = (5,4,3,2,1) #元组
s = "Hello" #字符串
print(l*2) #相乘操作,返回列表重复拼接2次后形成的新列表
print(t*2) #相乘操作,返回元组重复拼接2次后形成的新元组
print(s*3) #相乘操作,返回字符串重复拼接3次后形成的新字符串
输出:
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
(5, 4, 3, 2, 1, 5, 4, 3, 2, 1)
HelloHelloHello
1.1.5 成员资格
检查特定的值或元素是否在序列中,通常需要进行成员资格审查。一般使用运算符in
来判断满足特定的条件,满足时返回True
,不满足时返回False
。这种运算符也称为布尔运算符,返回的值称为布尔值。如下所示
l = [1,2,3,4,5] #列表
t = (5,4,3,2,1) #元组
s = "Hello" #字符串
print('2' in l) #资格检查操作,判断字符2是否在列表中,输出布尔值
print( 2 in l) #资格检查操作,判断数字2是否在列表中,输出布尔值(注意与上面的区别)
print('2' in t) #资格检查操作,判断字符2是否在元组中,输出布尔值
print('e' in s) #资格检查操作,判断字符e是否在字符串中,输出布尔值
输出:
False
True
False
True
1.2 列表(List)的理解
列表是python中使用次数最频繁的一种序列,主要是可以实现修改、删除、切片等操作,上面有介绍。这部分重点说下列表的一些方法。
1.2.1 append
表示将一个对象附加在列表的末尾,表示格式为l.append()
。例如
l = [1,2,3,4,5]
l.append(2)
print(l)
输出:[1,2,3,4,5,2]
。
1.2.2 clear
表示清空列表的所有内容,表示格式为l.clear()
。例如
l = [1,2,3,4,5]
l.clear()
print(l)
输出:[]
。
与clear差别还有pop操作,即表示删除某一个元素。例如
l = [1,2,3,4,5]
l.pop(2)
print(l)
输出:[1,2,4,5]
1.2.3 copy
表示复制列表内容,格式为l.copy()
。例如
l = [1,2,3,4,5]
a = l.copy()
print(a[1])
输出:2
。
1.2.4 count
表示指定元素在列表中出现的次数,格式为l.count()
。例如
l = ['a','b','b','c','d']
print(l.count('b'))
输出:2
。
1.2.5 index
表示某个元素在列表中第一次出现的索引位置,格式为l.index()
。例如
l = ['a','b','b','c','d']
print(l.index('c'))
输出:3
。
1.2.6 insert
表示将某一个对象插入列表指定的索引位置,格式为l.insert( *,*)
。例如
l = ['a','b','b','c','d']
l.insert(2,'e')
print(l)
输出:['a','b','e','b','c','d']
。
1.2.7 reverse
表示将列表中的顺序进行翻转,即相反的顺序,格式为l.reverse()
。例如
l = [1,2,3,4,5]
l.reverse()
print(l)
输出:[5,4,3,2,1]
。
1.2.8 sort或sorted
表示对列表中的元素就地排序,即从小到大,格式为l.sort()
。例如
l = [3,2,1,4,5]
l.sort()
print(l)
输出:[1,2,3,4,5]
。注意与reverse的区别。
1.3 元组(tuple)的理解
元组与列表类似,只是表示的方法和可操作性不同,即列表用[]
而元组用()
表示方法,列表可以修改而元组不可以修改。
其他的基本操作与列表类似,这里不再赘述!
1.4 字符串(string)的理解
字符串是不可变的,其大致方法和列表差不多。由于太多,这里就记录下我目前了解的。
1.4.1 center
表示在字符串两边填充字符,且让字符串居中。例如
s = "hello"
print(s.center(10,'*')) #两边填充'*‘号,且满足最后的总长度为10.
输出:**hello***
.
1.4.2 find
表示查找字符串中对应的子串,若找到返回索引位置,否则返回-1
s = "hello world!"
print(s.find('o'))
print(s.find('z')
输出:4
和-1
。
1.4.3 join
表示合并序列的元素,且需要满足是字符串列表。
l = ['a','b','b','c','d']
x = '+'
print(x.join(l))
输出:a+e+b+c+d
1.4.4 split
与join方法正好相反,表示将字符串拆分为序列。
l = 'a+e+b+c+d'
x = '+'
print(x.join(l))
输出:['a','b','b','c','d']
1.4.5 lower
表示返回字符串的小写版本,格式为l.lower()
。例如
s = "Hello World!"
print(s.lower())
输出:hello world!