外观
序列
Python中的序列包括元组、列表、字典、集合、字符串。
元组
元组是不可变序列,因此它可以作为字典的键值。使用元组可以通过索引来访问其中的元素,索引从0开始,例如,使用 tuple[x] 可以访问第 x+1 个元素。元组的创建使用括号和逗号,例如 (item1, item2, item3)。如果元组只有一个元素,则在元素后面需要加一个逗号,例如 (item,)。元组中可以存储任意类型的数据,并且可以使用内置函数 tuple() 将一个可变序列转换为元组。
元组也可以使用切片进行范围访问。例如,使用 tuple[x:y] 可以访问第 x+1 到第 y 个元素(不包含第 y 个元素)。如果需要间隔访问元组中的元素,可以使用 tuple[x:y:s],其中 s 为步长,表示每隔 s 个元素访问一次。切片中索引的规则是,正数索引从0开始,负数索引从倒数第一个元素开始,省略 x 或 y 表示从第一个或者最后一个元素开始,省略步长 s 表示步长为1。
元组本身是不可变的,但在创建新的元组对象时可以对已有元组进行合并、取子集等操作。元组也支持遍历和推导式操作,例如使用 for 循环遍历元组中的元素,或者使用元组推导式来创建新的元组对象。
例:
tuple1 = (1, 2, 3) # 定义一个元组 还可以去掉括号 但是逗号不能省略
tuple2 = 1, 2, 3 # 也可以使用内置函数tuple将一个可变序列转换成元组
print(tuple1)
print(tuple2)
tuple3 = 1, # 定义只有一个元素的元组要写成左边的形式
tuple4 = (1,)
print(tuple3)
print(tuple4)
tuple5 = () # 想定义一个空元组可以使用左边的两种方式
tuple6 = tuple()
print(tuple5)
print(tuple6)
tuple7 = (1, 'a', (1, 'a'), None) # 元组内的元素可以是不同类型的元素
print(tuple7)
tuple8 = tuple(x for x in range(1, 10)) # 使用元组推导式时得到的对象是一个生成器,要使用tuple()函数将其转换成元组
print(tuple8)
print(tuple8[0:2])运行结果:
(1, 2, 3)
(1, 2, 3)
(1,)
(1,)
()
()
(1, 'a', (1, 'a'), None)
(1, 2, 3, 4, 5, 6, 7, 8, 9)
(1, 2)列表
列表是可变的有序序列,可以使用 for 循环对列表进行遍历。列表是一种常见的数据结构,它可以存储任意类型的数据,并且可以根据需要动态调整大小。
列表对象具有许多常用方法,其中一些包括:
append(x):向列表末尾追加元素 x。
- sort():将列表按升序排序。如果需要按降序排序,可以设置参数
- reverse=True。也可以使用内置函数 sorted(x) 来实现排序。
- count(x):统计列表中元素 x 出现的次数。
- index(x):获取元素 x 第一次出现的索引。
- insert(i, x):在指定位置 i 插入元素 x。
- remove(x):移除列表中第一个出现的元素 x,并返回该元素。
此外,列表也支持列表推导式和切片操作,类似于元组。使用列表推导式可以根据特定规则创建新的列表对象,而切片操作则允许获取列表的子集或进行特定范围的访问。
例:
list1 = [1, 2, 3] # 创建一个列表使用的是方括号
list2 = list(tuple1) # 还可以使用内置函数list将一个序列转换成列表
print(list1)
print(list2)
list3 = [] # 想要创建一个空列表只需使用一对方括号即可
print(list3)运行结果:
[1, 2, 3]
[1, 2, 3]
[]字典
字典和其他序列不同的是,字典是以键值对存储的,可以通过访问键的方式获取对应的值。字典的键不能重复,但映射是可以相同的。
- 使用
dict[key]访问字典元素,其中dict为字典对象,key为键。 - 创建一个空字典可以使用一对大括号
{}或者使用内置函数dict()。 - 若要添加元素,直接使用
dict[newKey] = newValue,其中newKey为新键。 - 使用
del dict[key]删除元素,其中key必须存在。 - 存在字典推导式,格式为
dict = {key:value for 元素 in 可迭代对象}。
字典对象的常用方法包括:
dict.items():将所有键值对转换成对应的元组(dict为字典对象)。dict.keys():将所有的键转换成元组。dict.values():将所有的值转换成元组。
例:
dic = {'1': 'a', '2': 'b', '3': 'c'}
for i, j in dic.items(): # dict.items() 将所有键值对转换成对应的元组
print(i, j, end=', ')
print()
for i in dic.keys(): # dict.keys() 将所有的键值转换成元组
print(dic.keys(), end=', ')
print()
for i in dic.values(): # dict.values() 将所有的值转换成元组
print(i, end=', ')
print('\n')
dic1 = dict()
dic2 = {} # 创建一个空字典使用一对大括号或者使用内置函数dict() 实际上所有对应的序列函数都可以生成一个对应的对象 下面不再演示。
# 使用字典推导式快速生成一个字典
keys = (1, 2, 3)
values = ('a', 'b', 'c')
dic = {i: j for i, j in zip(keys, values)}
print(dic)运行结果:
1 a, 2 b, 3 c,
dict_keys(['1', '2', '3']), dict_keys(['1', '2', '3']), dict_keys(['1', '2', '3']),
a, b, c,
{1: 'a', 2: 'b', 3: 'c'}集合
集合是无序的,用于保存不重复的元素,并且可以执行类似数学中集合的基本运算。在Python中,可以按照以下方法操作集合:
- 创建集合使用花括号。
- 使用
set.add(x)向集合中添加元素 x。 - 使用
pop()或者remove()方法删除元素。 - 使用“&”进行交集运算,使用“|”进行并集运算,使用“-”进行差集运算,使用“^”进行对称差集运算。
例:
set1 = {1, 2, 3}
print(set1)
set2 = set() # 创建空集合 不能使用括号
print(set2)
set1 = {1, 2, 3, 4, 5}
set2 = {2, 3, 6}
print('set1 & set2 = ', set1 & set2)
print('set1 | set2 = ', set1 | set2)
print('set1 - set2 = ', set1 - set2)
print('set1 ^ set2 = ', set1 ^ set2)运行结果:
{1, 2, 3}
set()
set1 & set2 = {2, 3}
set1 | set2 = {1, 2, 3, 4, 5, 6}
set1 - set2 = {1, 4, 5}
set1 ^ set2 = {1, 4, 5, 6}字符串
字符串在Python中是一种常见的数据类型,可以使用单引号或双引号表示。字符串支持多种操作,包括切片、索引访问以及使用 for 循环进行遍历。此外,字符串还可以通过 + 运算符进行拼接。在字符串中,还可以使用转义字符来表示特殊字符。另外,字符串前面可以加上 r、u 或 b 来表示不转义、以 Unicode 编码、或者表示为字节码。
格式化
- 使用 % 运算符
使用 % 格式化字符串是 Python 中常见的格式化方法,其语法格式如下:
'%[-][+][0][m][.n]格式字符' % exp其中,可选参数包括:
-:指定左对齐,正数前面无符号,负数前面有负号。+:指定右对齐,正数前面有正号,负数前面有负号。0:指定右对齐,正数前面无符号,负数前面有负号,不足位数的用0代替。m:用于指定数字位数。.n:用于指定小数位数。
其规则与 C 语言很相似。
例:
template1 = '%09d'
context1 = 1234567
print(template1 % context1)
template2 = '数值: %4.2f, 字符串: %s'
context2 = (12.34567, '小红') # 若要转换的项多于一个 就需要使用元组
print(template2 % context2)运行结果:
001234567
数值: 12.35, 字符串: 小红- 使用字符串对象的format()方法
使用字符串对象的 format() 方法是另一种常见的格式化字符串的方法,其模板的格式为 {[index]:[fill][align][sign][#][width][.precision][type]}。
其中,可选参数包括:
index:指定要设置格式的对象在参数列表的索引位置。如果索引值省略,则使用默认排序。fill:指定空白处填充的字符。align:指定对齐参数,可选值包括<左对齐、>右对齐、^居中对齐、=只对数字有效,右对齐,正数前无符号。sign:指定数字格式化格式,可选为-、+。若为空格,则表示正数加空格,负数加负号。#:在二进制、八进制、十六进制数前分别显示\0b、\0o、\0x。width:指定所占宽度。.precision:指定保留的小数位数。type:指定类型,和 C 语言非常类似。若为G或g,则自动在e和f转换。
例:
template3 = '数字格式化: {:,.2f}'
context3 = 12345.6789
print(template3.format(context3))
template4 = '数字依次转换为二进制 八进制 十六进制数: {:#b} {:#o} {:#x}'
print(template4.format(123, 456, 789))运行结果:
数字格式化: 12,345.68
数字依次转换为二进制 八进制 十六进制数: 0b1111011 0o710 0x315字符串对象常用方法
string.capitalize(): 把字符串的第一个字符大写。string.count(str, beg=0, end=len(string)): 返回 str 在 string 中出现的次数,可以指定起始位置 beg 和结束位置 end。string.decode(encoding='UTF-8', errors='strict'): 以指定的编码格式解码字符串。string.encode(encoding='UTF-8', errors='strict'): 以指定的编码格式编码字符串。string.endswith(obj, beg=0, end=len(string)): 检查字符串是否以指定对象 obj 结束,可以指定起始位置 beg 和结束位置 end。string.find(str, beg=0, end=len(string)): 检测字符串是否包含子字符串 str,可以指定查找范围。string.format(): 格式化字符串。string.index(str, beg=0, end=len(string)): 类似于 find() 方法,但是如果 str 不在 string 中会报错。string.isdecimal(): 如果字符串只包含十进制数字,则返回 True。string.isdigit(): 如果字符串只包含数字,则返回 True。string.islower(): 如果字符串中包含至少一个区分大小写的字符,并且所有这些字符都是小写,则返回 True。string.isupper(): 如果字符串中包含至少一个区分大小写的字符,并且所有这些字符都是大写,则返回 True。string.join(seq): 将 seq 中所有的元素(的字符串表示)合并为一个新的字符串,以 string 作为分隔符。string.lower(): 将字符串中所有大写字符转换为小写。string.lstrip(): 截掉字符串左边的空格。max(str): 返回字符串 str 中最大的字母。min(str): 返回字符串 str 中最小的字母。string.replace(str1, str2, num=string.count(str1)): 将字符串中的 str1 替换为 str2,可以指定替换次数 num。string.rfind(str, beg=0, end=len(string)): 类似于 find() 方法,但返回最后一次出现的位置。string.rindex(str, beg=0, end=len(string)): 类似于 index() 方法,不过返回最后一次出现的位置。string.rstrip(): 删除字符串末尾的空格。string.split(str="", num=string.count(str)): 以 str 为分隔符切片字符串,可以指定切片次数 num。string.splitlines([keepends]): 按照行分隔字符串,返回一个包含各行作为元素的列表。string.startswith(obj, beg=0, end=len(string)): 检查字符串是否以 obj 开头,可以指定起始位置 beg 和结束位置 end。string.strip([obj]): 在字符串上执行 lstrip() 和 rstrip()。string.upper(): 将字符串中的小写字母转换为大写。
例:
# 不区分大小写判断会员名字是否唯一
member = ''
con = True
while con:
name = input("请输入会员名: ").lower()
print('输入会员名:', name)
if member.find('|' + name + '|') != -1:
print('该名字已存在: ', name)
elif len(member) == 0:
member = '|' + name + '|'
print('添加成功: ', name)
elif name == 'q':
break
else:
member += name + '|'
print('添加成功: ', name)
print('现有会员列表: ', member)运行结果:
输入会员名: zhangsan
添加成功: zhangsan
现有会员列表: |zhangsan|
输入会员名: lisi
添加成功: lisi
现有会员列表: |zhangsan|lisi|
输入会员名: q