python-6列表和元组

序列

索引

元素1 元素2 元素3 元素4 元素5 元素6
0 1 2 3 4 5
-6 -5 -4 -3 -2 -1
verse = ["LSF","LYF","LJZ","ZSF","YX"]
print(verse[0])
print(verse[-1])
print(verse[1])

LSF YX LYF

切片

sname[strart :end;step]
end不包括本事
strp步长默认为1,可以省略

verse = ["LSF","LYF","LJZ","ZSF","YX"]
print(verse[0:4:3])

[‘LSF’, ‘ZSF’]
注意:复制整个系列用
print(verse[:])即可

序列相加

不同元素类型也可以相加,但是序列和元组和字符串不能相加

verse = ["LSF","LYF","LJZ","ZSF","YX"]
football = ["axle","cl","mx"]
luckynum = [3,10,33]
print(verse+football)
print(football+luckynum)

结果:[‘LSF’, ‘LYF’, ‘LJZ’, ‘ZSF’, ‘YX’, ‘axle’, ‘cl’, ‘mx’]
[‘axle’, ‘cl’, ‘mx’, 3, 10, 33]

乘法

family = ["LSF","LYF","LJZ","ZSF","YX"]
football = ["axle","cl","mx"]
luckynum = [3,10,33]
print(family*2)

[‘LSF’, ‘LYF’, ‘LJZ’, ‘ZSF’, ‘YX’, ‘LSF’, ‘LYF’, ‘LJZ’, ‘ZSF’, ‘YX’]
可以用乘法生成指定长度列表

查询元素是否在序列中

value in sequence
value 表示元素,sequence表示序列

family =["lsf","zyy","yx","lyf","zsf","ljz",6,8,33]
print("zyy" in family)
print(33 in family)

Ture Ture
注意:字符串要用引号

计算序列的长度、最大值和最小值

family =["lsf","zyy","yx","lyf","zsf","ljz",6,8,33]
print("序列family的长度是:",len(family))
print("序列family的长度是:"+str(len(family)))

序列family的长度是: 9
序列family的长度是:9

family =[66,6,8,33,23,44,67]
print("序列",family,"中的最大值是:",max(family),"/""序列",family,"的最小值是",min(family))

序列 [66, 6, 8, 33, 23, 44, 67] 中的最大值是: 67 /序列 [66, 6, 8, 33, 23, 44, 67] 的最小值是 6
python提供的内置函数

函数 说明
len() 求序列长度
max() 求最大值
min() 求最小值
list() 将序列转化成列表
str() 将序列转换成字符串
sum() 计算元素和
sorted() 对元素进行排序
reversed 反向序列中的元素
enumerate() 将序列组合成一个索引序列,用于for循环
family =[66,6,8,33,23,44,67]
u=str(family)
print(type(u))
print(sorted(family))
print(list(reversed(family)))   //reversed返回的是一个迭代器,用list


[6, 8, 23, 33, 44, 66, 67]
[67, 44, 23, 33, 8, 6, 66]

列表

列表创建和删除

1、直接创建
listname = [element1,element2,element3,…]
2、创建空列表
emptylist= []
3、数值列表
list(data)
data可以是range对象,字符串,元组,其他可迭代类型的数据

ab = list(range(1,10,3))
print(ab)

[1, 4, 7]
4、删除列表
del listname

访问列表元素

family =["lsf","zyy","yx","lyf","zsf","ljz",6,8,33]
print(family)
print(family[1:10:2])

[‘lsf’, ‘zyy’, ‘yx’, ‘lyf’, ‘zsf’, ‘ljz’, 6, 8, 33]
[‘zyy’, ‘lyf’, ‘ljz’, 8]

遍历列表

1、用for循环实现
for name in listname
print(name)

family =["lsf","zyy","yx","lyf","zsf","ljz",6,8,33]
for familyname in family:
    print(familyname)

lsf
zyy
yx
lyf
zsf
ljz
6
8
33

name = "python"
for name1 in name:
    print(name1)

p
y
t
h
o
n

2、使用for和enumerate
for index,name in enumerate(listname)
print(index,name)

for index,pyl in enumerate("python"):
    print(index,pyl)

0 p
1 y
2 t
3 h
4 o
5 n

family =["lsf","zyy","yx","lyf","zsf","ljz",6,8,33]
for index , familyname in enumerate(family):
    print(index+1,familyname)

1 lsf
2 zyy
3 yx
4 lyf
5 zsf
6 ljz
7 6
8 8
9 33

添加、修改、删除列表元素

1、添加元素

listname.append(obj) //添加一个元素

family =["lsf","zyy","yx","lyf","zsf","ljz"]
family.append("lef")
print(family)

[‘lsf’, ‘zyy’, ‘yx’, ‘lyf’, ‘zsf’, ‘ljz’, ‘lef’]

listname.extend(seq) //添加列表

family =["lsf","yx","lyf","zsf","ljz"]
fk =["zyy","zyq","zfr","lxb"]
family.extend(fk)
print(family)

[‘lsf’, ‘yx’, ‘lyf’, ‘zsf’, ‘ljz’, ‘zyy’, ‘zyq’, ‘zfr’, ‘lxb’]

2、修改元素
修改元素只需要通过索引获取元素后,重新给他赋值就可以了

family =["lsf","yx","lyf","zsf","ljz"]
print(family)
family[2] ="lyf and lef"
print(family)

[‘lsf’, ‘yx’, ‘lyf’, ‘zsf’, ‘ljz’]
[‘lsf’, ‘yx’, ‘lyf and lef’, ‘zsf’, ‘ljz’]

3、删除元素

family =["lsf","yx","lyf","zsf","ljz"]
print(family)
del family[1]
print(family)

[‘lsf’, ‘yx’, ‘lyf’, ‘zsf’, ‘ljz’]
[‘lsf’, ‘lyf’, ‘zsf’, ‘ljz’]

删除不确定位置的函数用remove

family =["lsf","yx","lyf","zsf","ljz"]
print(family)
family.remove("yx"):
print(family)

[‘lsf’, ‘yx’, ‘lyf’, ‘zsf’, ‘ljz’]
[‘lsf’, ‘lyf’, ‘zsf’, ‘ljz’]
思考:如果是有2个yx怎么处理?

首先判断元素是否在里面

family =["lsf","yx","lyf","zsf","ljz"]
print(family)
LZ= "lsf" in family
if LZ == True:
    family.remove("yx")
print(family)

[‘lsf’, ‘yx’, ‘lyf’, ‘zsf’, ‘ljz’]
[‘lsf’, ‘lyf’, ‘zsf’, ‘ljz’]

列表中数据统计

1、获取指定元素出现的次数
listname.count(obj)

family =["lsf","yx","lyf","zsf","ljz","yx"]
num = family.count("yx")
print(num)

2

2、获取指定元素首次出现的下标
listname.index(obj)

family =["lsf","yx","lyf","zsf","ljz","yx"]
index1 = family.index("yx")
print(index1)

1
3、统计数值列表的元素和
sum(iterable[,start])

num1 = [1,2,3,4,5,6,7,8,9]
sumnum = sum(num1[1:5])
print(sumnum)

14

对列表进行排序

1、使用列表对象sort()方法实现
listname.sort(key=None,reverse=False

num1 = [1,7,5,15,66,2]
num1.sort()
print(num1)
num1.sort(reverse=True)
print(num1)

[1, 2, 5, 7, 15, 66]
[66, 15, 7, 5, 2, 1]

char = ["zyy","zyq","yx","lxb","Zfr"]
char.sort()
print(char)
char.sort(key=str.lower)
print(char)

[‘Zfr’, ‘lxb’, ‘yx’, ‘zyq’, ‘zyy’]
[‘lxb’, ‘yx’, ‘Zfr’, ‘zyq’, ‘zyy’]

2、使用内置的sorted()函数实现

num1 = [1,7,5,15,66,2]
num =sorted(num1,reverse=True)
num2= sorted(num1)
print(num)
print(num2)

[66, 15, 7, 5, 2, 1]
[1, 2, 5, 7, 15, 66]

sort()和sorted()功能都是一样的,但是sorted要建立一个新的副本,

列表推导式

用于快速生成列表
1、指定范围
list = [Expression for var in range]

import random
rdnum =[random.randint(1,100) for i in range(5)]
print(rdnum)

2、根据列表生成指定需求列表
newlist = [Expression for var in list]

price = [100,40,35,27,40]
sale =[x*0.5 for x in price]
print((sale))

[50.0, 20.0, 17.5, 13.5, 20.0]
3、旧列表中选择符合条件的元素添加到新列表
newlist = [Expression for var in list if condition]

price = [100,50,70,60,30]
sale = [x for x in price if x>50]
print(sale)

[100, 70, 60]

元组

1、创建元组
tuplename = (element1, element2,element3,…)
用小括号,也可以不用,只要有逗号隔开即可

family1 =("lsf")
family2 =("lsf",)
print(type(family1))
print("类型是:",type(family2))


类型是:
注意逗号

2、创建空元组
emptytuple =()

3、创建数组

tuplename = tuple(range(10,20,3))
print(tuplename)

(10, 13, 16, 19)

4、删除元组
del tuplaname

5、访问元组
print(tuplename)
print(tuplename[2])

列表和元组的区别

1列表属于可变序列,元组不能
2列表可以使用append()、extend() instrat() remove()和pop()等方法,元组不能
3 列表可以切片和修改,元组可以切片
4 元组比列表访问更快,
5 列表不能作为字典的建

1、实战任务

year = [89,98,00,75,68,37,58,90] # 原有的年份列表
for index,value  in enumerate(year):  # 遍历列表元素索引与年份
      if str(value)!='0':             # 判断非0年份
            year[index]=int('19'+str(value))
      else:
            year[index]=int('200'+str(value)) # 判断2000年
print(year) # 打印修改后的年份列表

[1989, 1998, 2000, 1975, 1968, 1937, 1958, 1990]

你可能感兴趣的:(学习,python)