No.6 Python序列:字符串、列表和元组

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值