python中元组和列表
1.元组:
<1>.定义:(),不能改值的数组
a = 1,2,3,4,5
print(type(a))
#tuple
单个元组的定义(a,)
<2>. 字符串可以直接转成元组:
c = '1234'
# print(tuple(c))
# ('1', '2', '3', '4')
<3>. 索引,切片操作,同字符串,列表一样
a = (1, 2, 3, 4)
# 切片:第一位不写,默认从0开始,第二位不写,默认取最后一位,第三位是步长,不写默认是1
print(a[0::2])
#(1, 3)
<4>. 循环,同字符串,列表,一样,三种循环方式:
for i in data:
for i in range() range 取值范围,包含下边界,不包含上边界
for x,y in enumerate(tuple) 返回结果是一个二维元组
<5>.多维元组,元组取值
# a = (1, (0, 0), 3, 4, 5)
# print(a[1][1])
# b = ((1, 2), (3, 0), (8, 9))
# for i in b:
# for j in i:
# print(j)
<6>.元组相加:
# a = (1, 2, 3)
# b = (4, 5, 6)
# print(a + b)
# (1, 2, 3, 4, 5, 6)
<7>.元组相乘:
# a = (7, 8, 9)
# print(a * 3)
# (7, 8, 9, 7, 8, 9, 7, 8, 9)
<8>. 内置函数作用于元组:
# len(tuple):计算元组元素的个数
# max(tuple): 取出元组中元素的最大值
# min(tuple): 返回元组中元素最小值
# sum(tuple): 对元组中元素进行求和运算
# tuple(seq): 将其他的序列转成元组 如 列表,字符串
# count: tuple.count(i) 返回元组中某元素的出现的次数
2.列表:
<1>.定义:[] ,可变数据类型
# a = [1, 2, 3, 4]
#列表浅拷贝
# b = a[:]
# print(b)
<2>.元组转列表:
# a = (1, 2, 3, 4)
# b = list(a)
#print(b)
<3>.字符串转列表:
# 第一种方式
#a = '1212313'
#b = list(a)
#print(b)
#第二种方式:使用字符串的split方法
#a = '1&2&3&4'
#a = a.split('&')
#print(a)
<4>.列表取值,直接通过索引去取值:
#a = [1, 2, 3, 4]
#print(a[0])
<5>.列表改值,通过索引去修改:
# a = [1, 2, 3, 4]
# a[1] = 10
# print(a)
<6>.循环改值:
#a = [1, 2, 3, 4]
#for i in range(0, len(a)):
# a[i] = a[i] ** 2
#print(a)
#[1, 4, 9, 16]
<7>.列表循环,同字符串,元组一样:
for i in list:
for i in range(0,len(list))
for x,y in enumerate(list)
<8>.列表值的追加 append:
L = [1, 2, 3, 4]
L.append(5)
print(L)
<9>.列表值的追加 insert:
L = [1, 2, 3, 4]
# 往列表中第三位追加9
L.insert(2, 9)
print(L)
#[1, 2, 9, 3, 4, 5]
<10>.列表弹出pop 默认弹出最后一位,写了索引,弹出索引指定的值,pop函数有返回值
d = [1, 2, 3, 4]
# d.pop()
# print(d)
# [1, 2, 3]
# 如果写了索引,弹出索引指定的值
#d.pop(1) 弹出第二位
#print(d)
#[1, 3, 4]
<11>.extend 列表追加 ,与两个列表相加(lista + listb) 不同的是,相加会创建新的列表,而extend则是在原来的列表上追加值,不会创建新的列表,extend返回值是None
# a = [1, 2, 3, 4]
# b = [5, 6, 7, 8]
# print(a.extend(b))
# None
# print(a)
# [1, 2, 3, 4, 5, 6, 7, 8]
<12>.列表删除,remove 按内容来删除,只能删除第一次出现的值
# a = [1, 2, 4, 1, 4, 2, 1]
# 删除元素值为1
# a.remove(1)
# print(a)
# [2, 4, 1, 4, 2, 1]
<13>.clear 清空列表的值,返回空列表
<14>. sort 排序 默认按照升序排序(reverse=False),如果按照降序排序,需要写 reverse=True,sort没有返回值,返回为None
# a = [1, 2, 3, 4, 5, 6, 7, 8]
# a.sort()
# print(a)
# [1, 2, 3, 4, 5, 6, 7, 8]
# a.sort(reverse=True)
# print(a)
# [8, 7, 6, 5, 4, 3, 2, 1]
<15>. sorted排序 ,sorted 有返回值,返回结果是拍好序的列表
# a = [1, 2, 3, 4, 5, 6, 7, 8]
# print(sorted(a, reverse=True))
# [8, 7, 6, 5, 4, 3, 2, 1]
<16>. sort 与 sorted的区别,sort是列表的方法,sort是操作列表本身,没有返回值,而sorted是系统函数,有返回值,返回的是排好序的新列表,相当于把原来的列表copy了一次
# a = 'acdfe'
# print(sorted(a, reverse=True))
<17>. reverse 列表反转
a = [1, 2, 3, 4, 5, 6, 7, 8]
#a.reverse()
#print(a)
#[8, 7, 6, 5, 4, 3, 2, 1]
#第二种方式,使用切片
a = [1, 2, 3, 4, 5, 6, 7, 8]
a = a[::-1]
print(a)
#[8, 7, 6, 5, 4, 3, 2, 1]
<18>. 列表推导式
有列表 a = [1,3,4,7,11]。输出每个元素加2乘方,所组成的新列表
# print([(i + 2) ** 2 for i in [1, 3, 4, 7, 11]])
<19>. 列表去重方法
<1>.使用set方法,排序的顺序会乱:
a = [9, 2, 7, 9, 2, 7, 1, 8]
print(set(a))
#{1, 2, 7, 8, 9}
# set去重后保留原来的顺序
a = [9, 8, 7, 5, 2, 3, 5, 7]
b = list(set(a))
b.sort(key=a.index)
print(b)
<2>.往空列表追加值,保留原来的排序规则:
a = [9, 2, 7, 9, 2, 7, 1, 8]
b = []
for i in a:
if i not in b:
b.append(i)
print(b)
#[9, 2, 7, 1, 8]
<3>.使用字典的fromkeys方法将列表转成字典,并取出字典的keys,转成列表
a = [9, 2, 7, 9, 2, 7, 1, 8]
print(list(dict.fromkeys(a).keys()))
#[9, 2, 7, 1, 8]