Python学习总结【连载】(五)
Python学习总结【连载】(五)
2018.06.19 Juttachen
概述
+ 18 list 的概述
- 概念与特点
+ 19 list 元素的加改删查
+ 20 关于list的运算符和函数
十八、list 的概述
1. 概念与特点
补充:python中的数据类型:数字(不可变),字符串(不可变),列表,元组(不可变),字典,集合(不可变)
后四种又称序列类型或者容器类型数据,他们的特点就是可以存储很多数据。
列表:一个列表中可以存储多个不同类型的数据(在别的语言中又可以叫数组)
列表存储数据的方式:将多个数据放到一个中括号中,多个数据直接用逗号隔开。
列表特点:列表是可变的(指的是里面元素的个数和值可变)
列表是有序的(所有可以通过下标去获取元素,【字符串也是有序的】)
例子:声明一个列表 list1: 有5个元素,标志是中括号。
list1 =[1, 2, 3, 10.9, 'bcd']
print(list1)
例子:声明一个空的列表
list2 = []
十九、list 元素的加改删查
1.list 增加元素
list1 = []
a. append方法:
格式:列表名.append(元素)
特点:append添加元素是将元素添加到列表的后面的
list1.append('abc')
print(list1)
list1.append(10)
print(list1)
练习:找出列表[1,34,5,6,89,3,2,4]中所有的偶数,并储存
list2 = [1,34,5,6,89,3,2,4]
list1 = []
for item in list2:
if item % 2 == 0:
list1.append(item)
print(list1)
b. insert方法:
格式:列表名.insert(index(下标),元素)
特点:1.在指定的下标前插入指定的元素
2.在insert中下标是可以大于列表长度的(可以越界)。
-
当大于列表长度时,插入的数放在最后
-
在列表最前面插入数时,可以将下标写成0
list3 = [1, 2, 3, 4, 5, 6, 7, 8] list3.insert(1,'a') print(list3)
练习:通过insert在list3 的4和5之间插入元素’b‘,再在8的后面插入元素’c‘
list3.insert(5,'b')
list3.insert(10,'c')
print(list3)
2.list 修改元素
修改元素:通过下标拿到对应的元素,然后重新赋值(一定注意只有操作下标才能修改)
list1 = [1, 2, 3, 4, 5]
list1[1] = 20 # 将下标是1的元素变成20
print(list1)
3.list 删除元素
a. del语句
补充:del语句在python中,可以删除任何内容。
del语句删除列表元素的语法:del 列表名[下标],删除的时候下标也是不能越界的
例子:删除下标为1的元素
list1 = ['a',10,True]
print(list1)
del list1[1]
print (list1)
b. remove方法
格式:列表名.remove(元素)
特点:
-
可以删除指定元素
-
直接与元素相关,和下标没有关系
-
使用remove删除列表元素的时候,如果指定的元素在列表中有多个,只删除第一个
list4 = ['a','b','c',1,2,3] list4.remove('c') print(list4)
c.pop方法
可以取出指定下标的元素,对列表来说则是被删除。
格式:列表名.pop(下标):准确的说是从列表中取出指定下标的元素。(元素本身存在,但是被取出了,对于列表来说就是不存在了)
格式:列表名.pop():从列表中取出最后一个元素。
list6=[1,3,4,2,3,4,1]
delitem = list6.pop(1) #将下标是1的元素从列表中取出
print(delitem,list6)
del_item2 = list6.pop()
print(del_item2,list6)
例子:讲一个列表[1,2,3,4,5,6]中的元素全部取出放到另一个列表里变成[6,5,4,3,2,1]
list1 = [1,2,3,4,5,6]
list2 = []
while len(list1)>0:
# 从前往后取
value = list1.pop(0)
list2.insert(0,value)
# 从后往前取
value = list1.pop()
list2.append(value)
print(value)
print(list1)
print(list2)
4.获取列表元素(拿数据)
a.获取单个元素
字符串的切片问题和列表也是一样的,都是一种方式。
list1 =[1, 2, 3, 10.9, 'bcd']
print(list1[0])
print(list1[3])
print(list1[-1])
# print(list[5]) 越界错误 IndexError:list indeo out of range
b.获取子串
还是与字符串相似。
list3 = [2,10.5,'a','abc',10]
print(list3[1:4]) # 左闭右开,获取到的是从开始下标到结束下标前一个的所有元素
print(list3[0:4:2]) # 从下标为0开始到下标为3,每两个元素取一个
print(list3[::2])
c. 遍历列表
遍历列表即把列表中的元素一个一个的拿出来。
通过for循环将元素全部打印一次
list4 = [1,34,6,2,8,91,4]
for item in list4:
if item % 2 == 0:
print(item,end=' ')
计算列表中所有元素的和
print()
sum1 = 0
for item in list4:
sum1 += item
print(sum1)
使用while循环遍历列表元素
i = 0 # i就是列表元素对应的下标
while i < len(list4):
print(list4[i])
i += 1
取下标是奇数的数
方法一:
i = 1
while i < len(list4):
print(list4[1])
i += 2
方法二:
i = 0
while i < len(list4):
if i % 2 == 0:
i += 1 # 必须要写,因为continue会终止一次循环,后面的就不运行了,如果没有这句话就会死循环。
continue
print(list4[i])
i += 1
二十、关于list的运算符和函数
1.求列表长度借用len()函数
格式:len(列表或列表名)
list1 =[1,2,3,4,5,6]
length = len(list1)
print(length)
2.列表的+操作
列表1+列表2:将列表1和列表2中的元素,组合成一个新的列表
list2 = [1, 2, 3, 4] + ['a','b']
print(list2)
3.列表的*操作
列表整数:将列表中的元素重复指定次数,组合成一个新的列表。*
list3 = [10, 2]*4
print(list3)
4. in 和 not in
元素 in列表:判断指定的元素是否在指定的列表中
元素 not in列表:判断指定的元素是否不在指定的列表中
list4 = ['abc','123',1,'0o',10]
re = 'abc' in list4
print(re)
re = 'abcd' not in list4
print(re)
4.获取列表中的最大的元素
*** 格式:max(列表)***
list5 = [1,34,6,78,90,12,35]
max1 = max(list5)
min1 = min(list5)
print(max1)
5.获取列表中的最小值
格式:min(列表)
list6 = ['a','b','c','d','a']
print(max(list6))
注意:获取最大值或最小值的时候,列表的元素的类型要么都是数字要么都是字符串
练习:求表演的平均分数(5个裁判,给表演打分。去掉一个最高分,再去掉一个最低分)
import random
list1 = [] # 用来存储产生的随机数
for _ in range(0,5): # 当出现明显的要重复的命令,就要写循环。
num = random.randint(0,10)
# random.uniform(x,y):随机产生固定范围的浮点数
list1.append(num)
print(list1)
list1.remove(max(list1))
list1.remove(min(list1))
print(list1)
# sum(列表):计算列表中所有的元素的和,这里就可以直接用sum函数来计算和,不用用循环
sum = 0
while len(list1)> 0:
num1 = list1.pop()
sum += num1
print(sum/3)
6.将其他的数据转换成列表
格式:list(数据,但不是所有都行,只有序列类的才行),可以将字符串转换为列表。
list1 = list('abcdefg')
print(list1)
# 将列表转成字符串(不仅仅是将列表的元素拼接成字符的,而是将整个列表所有的结构都作为字符串的字符)
str1 =str([1,2,3,4,'a'])
print(str1,str[0])