Python中有这样一类数据类型,可以通过下标的偏移量来访问它的一个或几个成员,这种数据类型统称为序列。
序列包括字符串、列表和元组。这些类型都是由一个或多个成员共同组成的整体。
1、序列
序列类型每一个元素都可以通过指定偏移量的方式来获取,也可以通过切片的方式获取多个元素。
不同于我们的习惯,序列的偏移量是从0开始计数,并在(总元素数-1)处结束。
1.1 成员关系操作符(in, not in)
成员关系操作符使用来判断一个元素是否属于一个序列,满足关系返回True,否则返回False。
s1 = "abc"
s2 = "abcde"
print(s1 in s2) # True
print(s1 not in s2) # False
s3 = "f"
t1 = ("a", "b", "c", "d", "e")
print(s3 in t1) # False
print(s3 not in t1) # True
s4 = "e"
lst1 = ["a", "b", "c", "d", "e"]
print(s4 in lst1) # True
print(s4 not in lst1) # False
1.2 连接操作符(+)
这个操作符允许我们把一个序列和另一个相同类型的序列做连接。
s1 = "abc"
s2 = "bcd"
s3 = s1 + s2
print(s3) # abcbcd
t1 = ("a", "b", "c")
t2 = ("b", "c", "d")
t3 = t1 + t2
print(t3) # ('a', 'b', 'c', 'b', 'c', 'd')
lst1 = [1, 2, 3]
lst2 = [2, 4, 6]
lst3 = lst1 + lst2
print(lst3) # [1, 2, 3, 2, 4, 6]
1.3 重复操作符( * )
重复操作符可以将一个序列进行多份拷贝,该操作符返回一个新的包含多份原对象拷贝的对象。
s1 = "abc"
print(s1 * 5) # abcabcabcabcabc
t1 = (1, 2, 3)
print(t1 * 3) # (1, 2, 3, 1, 2, 3, 1, 2, 3)
lst1 = ["a", "b", "c"]
print(lst1 * 3) # ['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
1.4 切片操作符( [], [:], [::] )
前边提到,序列类型就是包含一些顺序排列的对象的一个结构。当我们需要获取序列中的一个或多个元素是,就可以用到我们的切片操作符。
lst1 = ["a", "b", "c", "d", "e"]
# 获取单个元素
s1 = lst1[2]
print(s1) # c
# 获取多个元素
lst2 = lst1[0:3]
print(lst2) # ['a', 'b', 'c']
# 步长2获取元素
lst3 = lst1[::2]
print(lst3) # ['a', 'c', 'e']
2、字符串
2.1 字符串中字符大小写变换
# 转换str中所有大写字符为小写
print("ABC".lower()) # abc
# 转换str中所有小写字符为大写
print("abc".upper()) # ABC
# 翻转str中的大小写
print("aBc".swapcase()) # AbC
# 返回标题化的字符串。所有单词首字母大写,其余小写
print("hello python".title()) # Hello Python
# 把字符串的第一个字母大写,其余小写
print("hello python".capitalize()) # Hello python
2.2 去空格和特殊符号
# 去掉字符串左边和右边的空格和换行符
print("\tabc\n ".strip()) # abc
# 去掉字符串左边和右边的str1
print("hello world".strip("lhd")) # ello wor
# 去掉字符串左边的空格和换行符
print("hello world".lstrip("lhd")) # ello world
# 去掉字符串右边的空格和换行符
print("hello world".rstrip("lhd")) # hello wor
2.3 字符串替换、分割
# str.replace(str1,str2,num=str.count(str1)) 替换指定次数的str1为str2,替换次数不超过num次。
print("hello world".replace("l", "L")) # heLLo worLd
# str.split(str1=”“,num=str.count(str1)) :以str1为分隔符,把str分成一个list。num表示分割的次数。默认的分割符为空白字符
print("hello world".split("l")) # ['he', '', 'o wor', 'd']
2.4 字符串连接
# str.join(seq) :把seq代表的序列(字符串序列),用str连接起来
print("l".join(['he', '', 'o wor', 'd'])) # hello world
2.5 字符串不变性
字符串不能被修改,是不可变类型。
3、列表
3.1 修改列表
通过索引,可以给指定元素重新赋值
numbers = [1, 2, 3, 4, 5]
# 将索引为3的值修改为10
numbers[3] = 10
print(numbers)
# [1, 2, 3, 10, 5]
3.2 删除列表元素
del 根据索引删除指定元素
pop 从列表中删除一个元素,并返回删除的元素,默认删除最后1元素,还可根据索引删除元素
numbers = [1, 2, 3, 4, 5]
# 将索引为1的值删除
del numbers[1]
print(numbers)
# [1, 3, 4, 5]
numbers = [1, 2, 3, 4, 5]
numbers.pop()
print(numbers)
# [1, 2, 3, 4]
3.3 添加元素
append 将一个对象附加到列表末尾
insert 将一个对象根据索引插入列表
numbers = [1, 2, 3, 4, 5]
numbers.append(6)
print(numbers)
# [1, 2, 3, 4, 5, 6]
numbers = [1, 2, 3, 4, 5]
numbers.insert(3, 6)
print(numbers)
# [1, 2, 3, 6, 4, 5]
3.4 清空列表
clear 清空列表内容
numbers = [1, 2, 3, 4, 5]
numbers.clear()
print(numbers)
# []
3.5 列表排序
sort 列表升序排列,降序排列需要加上(reverse=True),改变了原列表
numbers = [1, 3, 6, 2, 5, 7]
numbers.sort() # 升序
print(numbers)
# [1, 2, 3, 5, 6, 7]
numbers = [1, 3, 6, 2, 5, 7]
numbers.sort(reverse=True) # 降序
print(numbers)
# [7, 6, 5, 3, 2, 1]
4、元组
元组和列表非常相似,看起来不同的一点是元组用圆括号而列表用的是方括号。在功能上,元组和列表相比有一个很重要的区别,元组是不可变类型。
4.1 创建元组
元组使用小括号 ( ),列表使用方括号 [ ]。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
t1 = ('ABC', 'XYZ', 1234, 4567)
t2 = (1, 2, 3, 4, 5)
t3 = "a", "b", "c", "d" # 不需要括号也可以
print(t1) # ('ABC', 'XYZ', 1234, 4567)
print(t2) # (1, 2, 3, 4, 5)
print(t3) # ('a', 'b', 'c', 'd')
4.2 访问元组
和其他序列一样,元组同样可以通过下标索引或者切片的方式来访问元组中的值。
t1 = ('hello', 'python', 520, 1314)
t2 = (1, 2, 3, 4, 5, 6, 7)
print(t1[1]) # python
print(t2[1:5]) # (2, 3, 4, 5)
4.3 元组的不可变性
所谓元组的不可变指的是元组所指向的内存中的内容不可变。
但实际操作中,元组虽然不可修改元素的值,但是可以进行截取和拼接等操作。
t1 = ('hello', 'python', 520, 1314)
t2 = (1, 2, 3, 4, 5, 6, 7)
t3 = t1[1:3]
t4 = t1 + t2
print(id(t1), t1) # 2362997758616 ('hello', 'python', 520, 1314)
print(id(t2), t2) # 2362997709288 (1, 2, 3, 4, 5, 6, 7)
print(id(t3), t3) # 2363000225352 ('python', 520)
print(id(t4), t4) # 2362997506120 ('hello', 'python', 520, 1314, 1, 2, 3, 4, 5, 6, 7)