1列表的基本运算
①列表与字符串的相互转换
join()函数可以将列表转换成字符串,语法格式:
'连接符'.join(列表名) :
class1 = ['李白','王维','孟浩然','王安石','王昌龄','王之涣','苏东坡']
a=','.join(class1)
print(a)
#输出:李白,王维,孟浩然,王安石,王昌龄,王之涣,苏东坡
如果把第二行代码中的逗号换成空格,那么输出就是:李白 王维 孟浩然 王安石 王昌龄 王之涣 苏东坡
②将字符串转换为列表
split()函数可以将字符串转换成列表,语法格式:
字符串.split('分隔符')
#使用空格作为分隔符,将字符串'hi hello world'拆分成列表:
a='hi hello world'
print(a.split(' '))
#输出:['hi', 'hello', 'world']
③成员运算符 in
in 可以判断一个元素是否在一个列表中,语法格式:
元素 in 列表
#这是一个布尔表达式,如果元素在列表中,结果为布尔值 True,反之为 False。
class1 = ['李白','王维','孟浩然','王安石','王昌龄','王之涣','苏东坡']
libai = '李白' in class1
print(libai)
#输出:True
④列表的加法
列表的加法就是用 + 号将两个列表的元素放在一起组成一个新列表。
class1 = ['李白','王维','孟浩然','王安石','王昌龄','王之涣','苏东坡']
class2 = ['王勃','白居易','欧阳修','韩愈','柳宗元']
class3 = class1 + class2
print(class)
#输出:['李白', '王维', '孟浩然', '王安石', '王昌龄', '王之涣', '苏东坡', '王勃', '白居易', '欧阳修', '韩愈', '柳宗元']
⑤列表的乘法
列表的乘法用 列表 * n,就可以生成一个元素数目为原列表 n 倍的新列表。
class1 = ['李白','王维','孟浩然','王安石','王昌龄','王之涣','苏东坡']
class2 = class1 * 2
print(class2)
#输出:['李白', '王维', '孟浩然', '王安石', '王昌龄', '王之涣', '苏东坡', '李白', '王维', '孟浩然', '王安石', '王昌龄', '王之涣', '苏东坡']
2.元组
元组的定义和使用方法与列表非常类似,区别在于定义列表时使用的符号是中括号[],而定义元组时使用的符号是小括号(),并且元组中的元素不可修改:
class1 = ('李白','王维','孟浩然','王安石','王昌龄','王之涣','苏东坡')
print(class1)
#输出:('李白', '王维', '孟浩然', '王安石', '王昌龄', '王之涣', '苏东坡')
注意,就是只有一个元素的元组,在格式上与列表是不同的。仅一个元素 x 的列表写成 [x], 但仅一个元素的元组要在括号内多写个逗号:(x,)。
由于查询与分片操作并不会改变数据,所以我们说的两种列表元素的查询方式以及分片操作,在元组中是可用的。同样,列表运算符、in、加法乘法元组同样适用:
class1 = ('李白','王维','孟浩然','王安石','王昌龄','王之涣','苏东坡')
#索引
print(class1[1])
#输出:王维
print(class1.index('王安石'))3
#输出:3
#切片
print(class1[-3:])
#输出:('王昌龄', '王之涣', '苏东坡')
#加法
print(class1+class1)
#输出:('李白', '王维', '孟浩然', '王安石', '王昌龄', '王之涣', '苏东坡', '李白', '王维', '孟浩然', '王安石', '王昌龄', '王之涣', '苏东坡')
#乘法
print(class1*3)
#输出:('李白', '王维', '孟浩然', '王安石', '王昌龄', '王之涣', '苏东坡', '李白', '王维', '孟浩然', '王安石', '王昌龄', '王之涣', '苏东坡', '李白', '王维', '孟浩然', '王安石', '王昌龄', '王之涣', '苏东坡')
如果要修改元组中的元素应该怎么操作:
可以先用 list() 函数把元组转换成列表,将元素修改完毕后,再用 tuple() 函数转换回元组。
class1 = ('李白','王维','孟浩然','王安石','王昌龄','王之涣','苏东坡')
# 用 list() 函数,生成一个相同元素的新列表
new_class=list(class1)
#删除列表中最后一个元素(苏东坡)
new_class.pop()
#把列表转成元组
class1=tuple(new_class)
#打印元组
print(class1)
#输出:('李白', '王维', '孟浩然', '王安石', '王昌龄', '王之涣')
3.列表其他操作
①zip() 函数主要用于将两个或多个可迭代对象(如列表、元组等)的元素一一对应起来,生成一个新的元组序列。
它的作用是将两个长度相同的列表合并起来,相同位置的元素会被一一组对,变成一个元组。结果返回一个组合好的打包对象,需要我们再用 list() 函数转换回列表。
class1 = ['李白','王维','孟浩然','王安石','王昌龄','王之涣','苏东坡']
scores = [100,89,90,78,96,88,99]
# 将 scores 元素从低到高排列
scores.sort()
## 倒转 scores 中的排列顺序
scores.reverse()
# 用 zip() 将两个列表合并
class_scores = zip(class1,scores)
# 将结果转换回列表后,赋值给 name_rank
name_rank=list(class_scores)
#打印name_rank列表
print(name_rank)
#输出:[('李白', 100), ('王维', 99), ('孟浩然', 96), ('王安石', 90), ('王昌龄', 89), ('王之涣', 88), ('苏东坡', 78)]
②enumerate() 函数
“enumerate”单词本身意思是“枚举、数数”。所以对应的函数功能,就是一个一个地将列表中的元素数出来。它返回的是一个枚举对象,也需要我们用 list() 函数转换回列表。
class1 = ['李白','王维','孟浩然','王安石','王昌龄','王之涣','苏东坡']
new_class = list(enumerate(class1))
print(new_class)
#输出:[(0, '李白'), (1, '王维'), (2, '孟浩然'), (3, '王安石'), (4, '王昌龄'), (5, '王之涣'), (6, '苏东坡')]
enumerate() 函数中有个默认参数表示起始数字,默认为 0,所以才会从 0 开始数。我们可以手动输入起始数字 1,这样更加直观。
class1 = ['李白','王维','孟浩然','王安石','王昌龄','王之涣','苏东坡']
new_class = list(enumerate(class1,1))
print(new_class)
#输出:[(1, '李白'), (2, '王维'), (3, '孟浩然'), (4, '王安石'), (5, '王昌龄'), (6, '王之涣'), (7, '苏东坡')]