day6 列表基本操作
2018-11-12 本文已影响0人
遇见那天的雨真大
1.列表(list)
列表是python内置的可变并且有序的容器类数据类型(序列)
有序:可以通过下标获取元素
可变:指的是列表中元素的个数,元素的值以及元素的位置可变(支持增删改查)
列表的字面量:中括号括起来,里面有多个元素,元素之间用 , 隔开
[元素1,元素2....元素n]
元素:元素里面的内容可以是任何类型的数据。同一个列表,不同元素的类型可以不一样.
列表举例:
list1 = [10,20]
print(list1)
list2 = [10,20,"lorry",True,[1,2]]
list3 = []
print(list2,list3)
class_one =[["lorry",100],['lorrybz',10]]
print(class_one[0])
2.列表增删改查
2.1.查,获取列表的元素
- a.获取单个元素
列表[下标] - 获取指定下标的对应的元素,
列表一旦确定,列表中的每个元素都对应一个下标
下标的范围【0-列表长度-1】 or 【-1 - -列表长度】
下标不能越界
films =["欧美","日韩","国产","偷拍"]
print(films[1])
- b.获取多个元素(切片)
结果还是一个列表
列表[开始下标:结束下标:步长]
列表[开始下标:结束下标]
films =["欧美","日韩","国产","偷拍"]
print(films[0:3])
- c.遍历列表(将列表中元素一个一个的取出来)
for 变量 in 列表 用变量获取列表中的元素。
方法一:直接获取列表中元素
names = ["小明","小花","小红","黄梅梅"]
for item in names:
print(item)
方法二:通过遍历下标获取获取列表中元素
for index in range(len(names)):
print(names[index])
2.1.增,获取列表的元素(a.append())
films =["欧美","日韩","国产","偷拍"]
films.append("人妻")
print(films)
练习:#录入学生成绩,保存到一个列表中。(录入的时候不断的输入学生的成绩,知道输入end位置。)
scores =[]
flag = True
while flag:
score = input("请输入成绩(结束输入end):")
if score != "end":
scores.append(int(score))
else:
flag = False
print(scores)
2.2增,a.insert(下标,元素)
在制定 的下标前插入指定的元素。
films = ['欧美', '日韩', '国产', '偷拍', '人妻']
films.insert(2,"萝莉")
films.insert(0,"少妇")
print(films)
练习:有一个有序的数列【1,7,34,67,100】, 输入任意一个数列,插入后的数列还是从小到大的排序。
list1 = [1,7,34,67,100]
list2 = []
list3 = []
while True:
a = input("请输入数字(end结束):")
if a.isdigit():
list1.append(int(a))
elif a == "end":
break
else:
print("重新输入(end结束):")
print(list1)
list1.insert(-1,20)
a = len(list1)
for i in range(a):
aa = min(list1)
list3.append(aa)
list1.remove(aa)
print(list3)
nums = [1,7,34,67,100]
value = int(input("请输入一个数字"))
for index in range(len(nums)):
if nums[index] >= value:
nums.insert(index,value)
break
else: #如果没有找到一个比输入大的元素。
nums.append(value)
print(nums)
2.3.删除列表的元素
- a.del列表[] 删除列表中指定下标对应的元素
del 关键字,可以删除列表任何元素
films = ['欧美', '日韩', '国产', '偷拍', '人妻']
del films[-1]
print(films)
- b.remove(元素) 删除列表中指定的元素
如果指定的元素在;列表中有多个,只是删除列表中前面的一个
films = ['欧美','人妻','日韩','国产','偷拍','人妻']
films.remove("人妻")
print(films)
- c.列表.pop(元素) 去除列表最后一个元素
列表.pop(下标) - 去除列表中指定下标对应的元素
films = ['欧美', '日韩', '国产', '偷拍', '人妻']
a = films.pop()
b = films.pop(0)
print(films);print(a);print(b)
例子:有一个列表,列表中有数字和字符串两种类型的元素。要求将列表中的字符串全部放到另外一个列表中。
list1 = [1,"ab",303,"hello",89,9,90]
str1 = []
num = []
for item in list1:
if isinstance(item,str):
str1.append(item)
else:
num.append(item)
print(str1)
print(num)
list1 = [1,"ab",303,"hello",89,9,90]
list2 = []
index = 0
while 0 <= index <len(list1):
if isinstance(list1[index],str): #取出
item = list1.pop(index)
list2.append(item)
continue
index +=1
print(list1)
print(list2)
2.4.改(修改列表元素的值)
列表[下标] = 新值 -将列表中指定下标对应的元素改成指定的值。
films = ['欧美', '日韩', '国产', '偷拍', '人妻']
films[-1] = "萝莉"
print(films)
3.列表运算
- 1.+ 列表[]+列表[] 使用两个列表中原始,产生一个新的列表
list1 = [1,2,3]
list2 = ["lorry"]
print(list1+list2)
- 列表[]*n(正整数) 使用两个列表中原始,产生一个新的列表.
list1 = [1,2,3]
list2 = ["lorry"]
print(list1*3);print(list2*3);print((list1+list2)*3)
- in ,not in
元素 in 列表 判断指定的元素是否在列表中
元素 not in 列表 判断指定的元素是否不在列表中
- in ,not in
names = ["小明","lorry","lorrbz","路飞"]
if "lorry" in names:
print("nice,喜提500万")
else:
print("滚蛋")
- len(列表) 获取列表长度的个数
names = [["小明","小花"],"lorry",{"a":12,"n":50},lambda x:x*2]
print(len(names))
- 5.list(数据) 将其他数据转换成列表
注意:数据只能是序列,转换的方式是将序列中元素作为列表的元素
str1 = "hello"
print(list(str1))
print(list(range(10,20)))
- 6.max(列表) - 获取列表中元素的最大值
min(列表) - 获取列表中元素的最小值
注意:列表要求:
a.列表中元素类型都一样
b。元素对应的类型,支持比较大小,支持比较运算符
print(max([1,45,6,89,20]))
print(min([1,45,6,89,20]))
print(min(["患者","aaa","lalal","一","\u95fd"]))