Python 的序列和列表
序列是Python最基本的数据结构,序列都可以进行索引,切片,加,乘,检查成员的操作。
序列不仅支持通过位置来进行索引,Python还内置确定序列的长度以及确定最大和最小的元素的方法,非常方便。
Python有6个序列的内置类型,列表是其中的一个。语法为:方括号,包含的元素用逗号分隔,并且列表中的元素对数据类型及一致性都不做要求。
数字和字符串都可以形成列表,比如:
list1 = ["apple", "banana", 1, 2]
list2 = [1, 2, 3 ]
列表的创建
直接定义列表
# 创建列表
# 方式一
l=[1,2,3,4,5]
print (l)
# 方式二
[h,i,l,m,n]={1,2,3,4,5}
a=[h,i,l,m,n]
print ([h,i,l,m,n])
print (a)
运行结果为:
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
输入多个变量形成列表
比如输入多个数字:
# 将输入的数字形成列表
# 方式一
a = input("please input:")
l = list(map(int, a.split(',')))
print(l)
# 方式二
l= list(map(int,input("please input:").split(',')))
print(l)
运行结果:
please input:1,2,3
[1, 2, 3]
please input:1,2,3
[1, 2, 3]
将区间范围的数字形成列表
使用函数示例:
# 将区间范围的数字形成列表
# 方法一:直接list创建
l= list(range(1,10))
print(l)
# 方法二:使用for循环
l=[]
for i in range(1,10):
l.append(i)
print (l)
运行结果为:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
列表元素操作
获取列表元素
Python列表索引从0开始,所以可以根据索引获取list中的任意单个或多个元素,并且进行组合。
# 获取列表中的元素
l=[1,2,3,4,5]
print (l[0])
print (l[-5])
print (l[3:])
print (l[:-1])
运行结果为:
1
1
[4, 5]
[1, 2, 3, 4]
[5, 4, 3, 2, 1]
删除列表元素
python支持多种方式删除列表的元素,比如删除指定索引位置的元素,指定内容的元素,列表尾部的元素,示例:
# 删除列表中指定索引的元素,索引可以是一个范围,也可以是固定
l=[1,2,3,4,5]
del l[0]
print (l)
# 删除列表中的尾部元素
l=[1,2,3,4,5]
l.pop()
print (l)
#删除列表中第一次出现的指定元素
l=[1,2,1,2,3]
l.remove(2)
print (l)
运行结果为:
[2, 3, 4, 5]
[1, 2, 3, 4]
[1, 1, 2, 3]
列表插入元素
插入元素可以通过两种方式。
- 方式一:选中索引,可在索引位置插入元素,如果索引位置是一个范围,则起到替换元素的效果。
- 方式二:使用l.append()和l.insert()函数,可分别实现在列表尾部和指定索引位置插入元素。
# 列表指定索引插入元素
#在索引位置l[2]插入元素
l=[1,2,3,4,5]
l[2:2]=[6]
print(l)
#在索引位置l[1:2]插入元素
l=[1,2,3,4,5]
l[1:2]=[6]
print(l)
# 尾部追加元素
l=[1,2,3,4,5]
l.append(6)
print (l)
# 在指定索引位置追加元素
l=[1,2,3,4,5]
l.insert(3,6)
print (l)
运行结果为:
[1, 2, 6, 3, 4, 5]
[1, 6, 3, 4, 5]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 6, 4, 5]
列表元素个数
python提供了两个函数,来统计列表的元素个数
- len():用来统计元素总个数
- l.count():用来统计指定元素的个数
# 统计列表中元素总个数
l=[1,2,3,4,5]
len(l)
print (len(l))
# 统计指定元素在列表中出现的个数
l=[1,2,1,1,3]
l.count(1)
print (l.count(1))
运行结果为:
5
3
列表的操作
列表的合并
可以使用运算符+合并,也可以使用l.extended()函数,可以达到同样的列表合并效果。
l1=[1,2,3]
l2=[4,5,6]
print (l1+l2)
l1=[1,2,3]
l2=[4,5,6]
l1.extend(l2)
print (l1)
运行结果为:
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6]
列表的减法
# 方法一
list1=[1,2,3,4,5]
list2=[1,2,3]
list3=list(set(list1)-set(list2))
print (list3)
# 方法二
list1=[1,2,3,4,5]
list2=[1,2,3]
list3 = [i for i in list1 if i not in list2]
print (list3)
运行结果为:
[4, 5]
[4, 5]
列表的排序
python提供了函数支持列表中元素的排序
- l.reverse():列表元素倒序
- l.sort():列表中元素从小到大排序
# list倒序
l=[1,2,3,4,5]
l.reverse()
print (l)
# list从小到大排序
l=[1,2,1,1,3]
l.sort()
print (l)
运行结果为:
[5, 4, 3, 2, 1]
[1, 1, 1, 2, 3]
列表的去重
需要注意set(l)使用后,列表会丢失,所以需要使用list再转换回列表,见示例:
# list去重
l=[1,2,1,1,3]
set(l)
print (set(l))
print (list(set(l)))
运行结果为:
{1, 2, 3}
[1, 2, 3]
列表常用函数
常用的列表函数归类如下:
函数 | 作用 |
l.append(var) | 在列表尾部增加元素 |
l.insert(index,var) | 在列表指定索引位置增加元素 |
l.pop(var) | 返回最后一个元素,并从list中删除之 |
l.remove(var) | 删除第一次出现的该元素 |
l.count(var) | 该元素在列表中出现的个数 |
l.index(var) | 查找该元素的位置,无则抛异常 |
l.extend(l2) | 追加list,即合并l2到l上 |
l.sort() | 列表元素从小到大排序 |
l.reverse() | 列表元素倒序 |
del l[1:3] | 删除指定下标索引范围的元素 |
set(l) | 列表去重 |
这里有几道常见练习题可以巩固下。
题目一:列表的拷贝
将一个列表的数据复制到另一个列表中。
list1=[1,2,3,4,5]
list2=list1
list3=list1[:]
print (list2)
print (list3)
题目二:列表元素的输出
输出列表的元素,并且每个之间间隔1秒
import time
l=[1,2,3]
for i in l:
print (i)
time.sleep(2)
题目三:列表的创建
判断3-50之间有多少个素数,并输出所有素数。素数的定义:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
方法一:判断是素数则跳过,不是素数则形成列表,统计个数
l = []
n=0
for i in range(3,50):
#判断如果是素数,则打印,如果不是素数就跳过
for j in range(2,i):
if i % j == 0:
break
else:
n+=1
l.append(i)
print(l)
print (n)
方法二:将原数据生成列表m,判断是素数则形成列表l,两个列表的元素个数相减,就是素数的个数
l = []
m=[]
n=0
for i in range(3,50):
m.append(i)
#判断如果x是素数,则打印,如果不是素数就跳过
for j in range(2,i):
if i % j == 0 and i not in l:
l.append(i)
print (len(m)-len(l))