Python序列应用-列表

本文详细介绍了Python中的列表,包括定义、创建、删除、访问、遍历、排序、索引、列表推导式、添加、修改和删除元素等核心操作,帮助读者全面掌握列表的使用。
摘要由CSDN通过智能技术生成

1、列表定义

列表
1.1、列表是一个可以被修改的序列,所以我们对列表修改会直接修改到他本身,我们想要查看效果必须查看列表本身。
1.2、列表是一个有序的,可修改的,元素以逗号分割,以中括号包围的序列。
1.3、列表是用来存储数据的,列表可以存储多个多种类型的数据。

定义
list = [1,2.3,'hello',[1,2,4,5],(1,2,3)]
list = [
"hello","桃花源记","###",123456,
{'name':'jason','password':123456},
{'name':'张三','password':123478}
]

2、创建列表

2.1、直接创建
方法
list=[a1,a2...an]


说明
list:列表名称,可以是任何符合python命名规则的标识符。
a1...an:列表中的元素,个数没有限制,只要是python支持的数据类型就可以,
通常一个列表中值放一种数据类型,可以提高程序的可读性。

2.2、创建空列表
方法
list=[]


2.3、创建数值列表
方法
list=(data)

说明
data可以表示可以转换为列表得数据,类型可以是range对象、字符串、元组或其他可迭代类型得数据。

案例:10-20之间所有偶数列表。
list(range(10,20,2))

3、删除列表

3.1、用del删除
方法
del list

说明
(1)del语句在实际开发中并不常用,因为Python自带得垃圾回收机制会自动销毁不用的列表,所以即使我们不手动删除,python也会自动将其回收。
(2)删除是python内置功能,不是列表独有的。

案例
(1)删除整个列表
list = [1,2,3,4,5,'hello']
del list
注意:删除的列表不存在时会报错。

(2)删除列表中指定的元素
list = [1,2,3,4,5,'hello']
del list[1]
print(list)   #结果:[1, 3, 4, 5, 'hello']


3.2、用clear删除
方法
list.clear()

说明
清空列表中的数据,返回一个空列表。

案例
list = [1,2,3,4,5,'hello']
list.clear()
print(list)
输出:[]


3.3、用remove删除
方法
list.remove()

说明:
从左往右删除指定的第一个元素 ,如果元素不存在,会报异常。

案例
list = [1,2,3,4,5,'hello']
list.remove('hello')
print(list)  #结果:[1, 2, 3, 4, 5]


4、用pop删除
方法
list.pop()

说明
弹出,返回并删除指定索引位置上的数据,默认-1。
案例
list = [1,2,3,4,5,'hello']
list.pop(5)
print(list)   #结果:[1,2,3,4,5]

4、访问列表

4.1、访问整个列表
方法
print(list)

说明
返回整个列表内容。

案例
list=["ABC","世界","美好"]
print(list)
输出:
['ABC', '世界', '美好']


4.2、访问列表中的某个元素
方法
list[index]

说明:
从左往右返回查找到的第一个指定元素的索引,如果没有找到会报错。

案例
list = [1,2,3,4,5,'hello']
print(list[3])
输出:4

5、遍历列表

5.1、使用for循环实现

(1)通过下标索引index实现
方法
通过下标索引循环遍历打印列表中的数据。
list=[]
print(list[index])

案例
list=[1,2,3,4,5]
print(list[0])
输出:1
list=[1,2,3,4,5]

for i in range(0,len(list)):
print(list[i],end="")
输出:12345
list=[1,2,3,4,5]

for i in range(0,len(list)):
print(i,end=" ")
输出:0 1 2 3 4


(2)通过普通for循环实现
方法
list=[]
for i in list:
print(i)

案例
list=[1,2,3,4,5]
for i in list:
print(i)


5.2、使用for循环和enumerate()函数实现
方法
使用for循环和enumerate()函数可以实现同时输出索引值和元素内容,输出index和item。

for index,item in enumerate(listname)
参数说明:
.index:用于保存元素的索引。
.item:用于保存获取的元素值,要输出元素内容时,直接输出该变量即可。
.listname:为列表名称。

案例
list=["YES","CHINA","坦率","城市","优秀","幸福"]
for index,item in enumerate(list):
print(index+1,item)
输出:
1 YES
2 CHINA
3 坦率
4 城市
5 优秀
6 幸福


5.3、使用while循环实现
方法
while循环中i值是不会自动增加的,所以要注明i=i+1.

案例
list=[1,2,3,4,5]
i = 1
while i < 5:
	print(i)
	i = i + 1
输出:1 2 3 4

6、列表排序

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

说明
list:要进行排序的列表
key:指定一个从每个列表元素中提取一个比较键(例如,设置"key=str.lower",表示在排序时不区分字母大小写)
reverse:可选参数,如果为True,表示降序排列;为False,表示升序排列。默认为升序排列。

注意
1.sort()方法对字符串列表进行排序时,采用的规则是:先对大写字母进行排序,在对小写字母进行排序。
2.如果想对字符串列表进行排序而且不区分大小写,需要指定key参数。

例如
A=[caT,tom,TAM,AS,pet]
A.sort()
print("区分大小写:",A)
A.sort(key=str.lower)
print("不区分大小写:",A)

案例
grade=[98,99,97,100,100,96,95,100]
print("原列表:",grade)
grade.sort()
print("升序:",grade)
grade.sort(reverse=False)
print("降序:",grade)

注意
1.sort()对中文支持不好,排序结果和我们常用的按拼音或按笔画都不一致。
2.如果要实现对中文进行排序,还需要重新编写相应的方法进行处理,不能直接使用sort()方法。


6.2、使用内置函数sorted()实现
方法
sorted(list,key=None,reverse=False)

参数
list:要进行排序的列表名称
key:指定一个从每个列表元素中提取一个比较键(例如,设置"key=str.lower",表示在排序时不区分字母大小写)
reverse:可选参数,如果为True,表示降序排列;为False,表示升序排列。默认为升序排列。

注意
1.sort()方法对字符串列表进行排序时,采用的规则是:先对大写字母进行排序,在对小写字母进行排序。
2.如果想对字符串列表进行排序而且不区分大小写,需要指定key参数。

例如
A=[caT,tom,TAM,AS,pet]
A.sort()
print("区分大小写:",A)
A.sort(key=str.lower)
print("不区分大小写:",A)

说明
1.内置sorted()函数和列表对象的sort()方法作用基本相同,所不同的是:sort()方法会改变列表元素排列顺序;sorted()函数会建立一个原列表的副本,该副本为排序后的列表。

案例
grade=[98,99,97,100,100,96,95,100]
print("原列表:",grade)
A=sorted(grade)
print("升序:",A)
B=sorted(grade,reverse=True)
print("降序:",B)


6.3、使用reverse()实现
方法
按照索引顺序倒序/反向排序。

格式
list.reverse()

案例
list=[1,6,9,3,2,7,5,8,4]
list.reverse()
print(list)
输出:[4, 8, 5, 7, 2, 3, 9, 6, 1]

7、列表的索引

列表的索引和字符串的索引类似,但不完全相同,因为列表可以修改,所以我们可以通过列表的索引来修改列表。

案例
list = range(10)

print(list)
输出:range(0, 10)

print(list[0])
输出:0

print(list[-1])
输出:9

print(list[0:10])
输出:range(0, 10)

print(list[:7])
输出:range(0, 7)

print(list[0:])
输出:range(0, 10)

print(list[:])
输出:range(0, 10)

print(list[0:10:2])
输出:range(0, 10, 2)

print(list[::2])
输出:range(0, 10, 2)

print(list[::-1])
输出:range(9, -1, -1)

8、列表推导式

8.1、生成指定范围的数值列表。列表推导式可读性比较差,一般不建议使用。

方法
list=[Expression for var in range]

参数说明
list:生成的列表名称。
Expression:表达式,用于计算新列表的元素。
var:循环变量。
range:采用range函数生成的range对象。

案例
生成一个包括10个随机数的列表,要求数的范围在10-100(包括)之间。
代码如下:
import random

list = [random.randint(10,100) for i in range(10)]
print("生成的随机数:",list)
输出:
生成的随机数: [62, 78, 49, 13, 82, 66, 33, 42, 57, 100]


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

参数说明
newlist:新生成的列表名称。
Expression:表达式,用于计算新列表的元素。
var:循环变量。
list:用于生成新列表的原列表。

案例
定义一个商品价格列表,用列表推导式生成一个商品价格为5折的新列表.
代码如下:
list=[22,33,44,66]
newlist=[int(x*0.5) for x in list]
print("原价格:",list)
print("新价格:",newlist)
输出:
原价格 [22, 33, 44, 66]
新价格 [11, 16, 22, 33]


8.3、从列表中选择符合条件的元素组成新列表
方法
newlist=[Expression for var in list if condition]

参数说明
newlist:新生成的列表名称。
Expression:表达式,用于计算新列表的元素。
var:循环变量。
list:用于生成新列表的原列表。
condition:条件表达式,用于指定筛选条件。

案例
定义一个商品价格列表,用列表推导式生成一个商品价格高于50的新列表。
代码如下:
list=[22,33,44,66]
newlist=[x for x in list if x>50]
print("原列表:",list)
输出:
原价格 [22, 33, 44, 66]
新价格 [11, 16, 22, 33]

print("高于50的列表:",newlist)
输出:
原列表 [22, 33, 44, 66]
高于50的列表 [66]

案例
list = [num for num in range(10)]
print(list)
输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


list = [str(num) for num in range(10)]
print(list)
输出:
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
list = [str(num) for num in range(10) if num%2 == 0]
print(list)
输出:
['0', '2', '4', '6', '8']


list = [(x,y) for x in range(4) for y in "abcd" ]
print(list)
输出:
[
(0, 'a'), (0, 'b'), (0, 'c'), (0, 'd'),
(1, 'a'), (1, 'b'), (1, 'c'), (1, 'd'),
(2, 'a'), (2, 'b'), (2, 'c'), (2, 'd'),
(3, 'a'), (3, 'b'), (3, 'c'), (3, 'd')]


list = [[x,y] for x in range(4) for y in "abcd" ]
print(list)
输出:
[
[0, 'a'], [0, 'b'], [0, 'c'], [0, 'd'],
[1, 'a'], [1, 'b'], [1, 'c'], [1, 'd'],
[2, 'a'], [2, 'b'], [2, 'c'], [2, 'd'],
[3, 'a'], [3, 'b'], [3, 'c'], [3, 'd']]

练习-1
# 统计10000以内有多少个含有3的数字。

count=0 #定义一个计数器
for i in range(10001):      # 在10000以内开始循环
    if '3' in str(i):       # 如果i当中含有3
        count+=1            # 计数器+1
print(count)

# 用列表推导式实现
print(len([i for i in range(10001) if '3' in str(i)]))

9、添加列表元素

9.1、用insert()方法添加
方法
添加元素到列表的指定位置上,注意负索引。
list.insert(index,obj)

案例
list = [1,2,3,4,5]
list.insert(1,'nihao')
print(list)
输出:[1, 'nihao', 2, 3, 4, 5]


9.2、用append()方法添加
方法
追加,在列表的尾部加入指定的元素。
list.append(obj)

案例
list=["YES","CHINA","坦率","优秀"]
list.append("幸福")
print(list)
输出:['YES', 'CHINA', '坦率', '优秀', '幸福']


9.3、用extend()方法添加
方法
把一个列表的所有元素添加另外一个列表中,list1的内容将追加到list的后面。
list.extend(list1)

案例
list=["YES","CHINA","坦率","优秀"]
list1=["A1","A2"]
list.extend(list1)
print(list)
输出:['YES', 'CHINA', '坦率', '优秀', 'A1', 'A2']

10、修改列表元素

方法
通过索引获取该元素,然后给其重新赋值即可。
list[index] = value

案例
list=["YES","CHINA","坦率","优秀"]
list[1]="一切都将成为过去"
print(list)
输出:['YES', '一切都将成为过去', '坦率', '优秀']

11、删除列表元素

11.1、根据索引删除
del list[index]

案例
list=["YES","CHINA","坦率","优秀"]
del list[-1]
print(list)
输出:['YES', 'CHINA', '坦率']


11.2、根据元素值删除
方法
remove()
用这个方法最好判断下元素是不是存在,如果不存在会报错。

list=["YES","CHINA","坦率","优秀"]
value="YES"
if list.count(value)>0:
list.remove(value)
print(list)
输出:['CHINA', '坦率', '优秀']

案例
list=["YES","CHINA","坦率","优秀"]
list.remove("YES")
print(list)
输出:['CHINA', '坦率', '优秀']

12、统计计算列表

12.1、获取指定元素出现的次数
方法
list.count(obj)

案例
list=["YES","CHINA","坦率","优秀"]
num=list.count("YES")
print(num)
输出:1


12.2、获取指定元素首次出现的下标
方法
list.index(obj)

案例
list=["YES","CHINA","坦率","优秀"]
A=list.index("坦率")
print(A)
输出:2


12.3、统计数值列表的元素和
方法
sum(iterable[,start])

案例
list=[98,99,97,91]
total=sum(list)
print("总数为:",total)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢同学.

但行好事 莫问前程

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值