“Python列表类型的操作”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
(创建页面,内容为“==列表类型的操作== ===列表的操作函数=== *max()、min()函数用于返回列表中所有元素的最大值和最小值, *sum()函数用于返回列表…”)
 
enumerate()
 
(未显示同一用户的10个中间版本)
第1行: 第1行:
==列表类型的操作==
+
==列表的操作方法==
===列表的操作函数===
+
===添加元素===
*max()、min()函数用于返回列表中所有元素的最大值和最小值,
 
*sum()函数用于返回列表中所有元素之和;
 
*len()函数用于返回列表中元素个数,zip()函数用于将多个列表中元素重新组合为元组并返回包含这些元组的zip对象;
 
*enumerate()函数返回包含若干下标和值的迭代对象;
 
*map()函数把函数映射到列表上的每个元素,filter()函数根据指定函数的返回值对列表元素进行过滤;
 
*all()函数用来测试列表中是否所有元素都等价于True,any()用来测试列表中是否有等价于True的元素。
 
*标准库functools中的reduce()函数以及标准库itertools中的compress()、groupby()、dropwhile()等大量函数也可以对列表进行操作。
 
 
 
<nowiki>>>> x = list(range(11))              #生成列表
 
>>> import random
 
>>> random.shuffle(x)                #打乱列表中元素顺序
 
>>> x
 
[0, 6, 10, 9, 8, 7, 4, 5, 2, 1, 3]
 
>>> all(x)                          #测试是否所有元素都等价于True
 
False
 
>>> any(x)                          #测试是否存在等价于True的元素
 
True
 
>>> max(x)                          #返回最大值
 
10
 
>>> max(x, key=str)                  #按指定规则返回最大值
 
9
 
>>> min(x)
 
0
 
>>> sum(x)                    #所有元素之和
 
55
 
>>> len(x)                    #列表元素个数
 
11</nowiki>
 
 
 
===列表的操作方法===
 
====添加元素====
 
 
*append()用于向列表尾部追加一个元素,insert()用于向列表任意指定位置插入一个元素
 
*append()用于向列表尾部追加一个元素,insert()用于向列表任意指定位置插入一个元素
 
  <nowiki>>>> x = [1, 2, 3]
 
  <nowiki>>>> x = [1, 2, 3]
第53行: 第23行:
 
[1, 1.5, 2, 3, 4, 5, 6]</nowiki>
 
[1, 1.5, 2, 3, 4, 5, 6]</nowiki>
  
====删除元素====
+
===删除元素===
 
*pop()用于删除并返回指定位置(默认是最后一个)上的元素;
 
*pop()用于删除并返回指定位置(默认是最后一个)上的元素;
 
*remove()用于删除列表中第一个值与指定值相等的元素;
 
*remove()用于删除列表中第一个值与指定值相等的元素;
第71行: 第41行:
 
>>> x
 
>>> x
 
[1, 1, 1]</nowiki>
 
[1, 1, 1]</nowiki>
 +
===列表排序===
 +
*列表对象的sort()方法用于按照指定的规则对所有元素进行排序;reverse()方法用于将列表所有元素逆序或翻转。
  
*列表对象的sort()方法用于按照指定的规则对所有元素进行排序;reverse()方法用于将列表所有元素逆序或翻转。
 
 
  <nowiki>>>> x = list(range(11))                      #包含11个整数的列表
 
  <nowiki>>>> x = list(range(11))                      #包含11个整数的列表
 
>>> import random
 
>>> import random
第83行: 第54行:
 
>>> x.reverse()  </nowiki>
 
>>> x.reverse()  </nowiki>
  
====复制列表====
+
===复制列表===
 
*copy复制列表,而直接赋值的方法不产生新列表
 
*copy复制列表,而直接赋值的方法不产生新列表
  
第107行: 第78行:
  
 
列表是一个十分灵活的数据结构,当程序需要使用组合数据类型管理批量数据时,请尽量使用列表类型。
 
列表是一个十分灵活的数据结构,当程序需要使用组合数据类型管理批量数据时,请尽量使用列表类型。
 +
 +
===练习===
 +
*请补充横线处的代码,listA中存放了已点的餐单,让Python帮你增加一个“红烧肉”,去掉一个“水煮干丝”。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
 +
 +
<nowiki>listA = ['水煮干丝','平桥豆腐','白灼虾','香菇青菜','西红柿鸡蛋汤']
 +
listA.___①____ ("红烧肉")
 +
listA.____②____ ("水煮干丝")
 +
print(listA)</nowiki>
 +
 +
 +
*ls 是一个列表,内容如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
 +
 +
ls = [123, "456", 789, "123", 456, "789"]
 +
 +
请补充如下代码,将列表 ls 逆序打印‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
 +
 +
<nowiki>ls = [123, "456", 789, "123", 456, "789"]
 +
___①___
 +
print(ls)</nowiki>
 +
 +
==列表的操作函数==
 +
*max()、min()函数用于返回列表中所有元素的最大值和最小值,
 +
*sum()函数用于返回列表中所有元素之和;
 +
*len()函数用于返回列表中元素个数,zip()函数用于将多个列表中元素重新组合为元组并返回包含这些元组的zip对象;
 +
*enumerate()函数返回包含若干下标和值的迭代对象;
 +
*map()函数把函数映射到列表上的每个元素,filter()函数根据指定函数的返回值对列表元素进行过滤;
 +
*all()函数用来测试列表中是否所有元素都等价于True,any()用来测试列表中是否有等价于True的元素。
 +
 +
*标准库functools中的reduce()函数以及标准库itertools中的compress()、groupby()、dropwhile()等大量函数也可以对列表进行操作。
 +
 +
<nowiki>>>> x = list(range(11))              #生成列表
 +
>>> import random
 +
>>> random.shuffle(x)                #打乱列表中元素顺序
 +
>>> x
 +
[0, 6, 10, 9, 8, 7, 4, 5, 2, 1, 3]
 +
>>> all(x)                          #测试是否所有元素都等价于True
 +
False
 +
>>> any(x)                          #测试是否存在等价于True的元素
 +
True
 +
>>> max(x)                          #返回最大值
 +
10
 +
>>> max(x, key=str)                  #按指定规则返回最大值
 +
9
 +
>>> min(x)
 +
0
 +
>>> sum(x)                    #所有元素之和
 +
55
 +
>>> len(x)                    #列表元素个数
 +
11</nowiki>
 +
 +
 +
===any()===
 +
any() 函数用于 当元素全部为False时,则返回 False,如果有一个为 True,则返回 True。
 +
 +
元素除了是 0、空、FALSE 外都算 TRUE。
 +
 +
<nowiki>
 +
>>> any(['a','b','c','d'])
 +
True
 +
>>> any([0,'a','b','c'])
 +
True</nowiki>
 +
 +
===all()===
 +
all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。
 +
 +
元素除了是 0、空、None、False 外都算 True。
 +
 +
<nowiki>
 +
>>> all(['a', 'b', '', 'd'])
 +
False
 +
>>> all(['a', 'b', 'c', 'd'])
 +
True</nowiki>
 +
 +
===enumerate() ===
 +
 +
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
 +
 +
>>> list(enumerate(seasons))
 +
 +
  [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
 +
 +
普通的for循环:
 +
 +
  <nowiki>
 +
 +
i = 0
 +
seq = ['one', 'two', 'three']
 +
for element in seq:
 +
    print(i, seq[i])
 +
    i += 1
 +
</nowiki>
 +
 +
enumerate 循环:
 +
 +
<nowiki>
 +
for i, element in enumerate(seasons):
 +
print(i,element)</nowiki>
 +
 +
 +
遍历列表的三种方法:
 +
 +
1)普通遍历:
 +
 +
  <nowiki>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
 +
 +
for i in seasons:
 +
  print(i)</nowiki>
 +
 +
2)用序号遍历:
 +
 +
<nowiki>for i in range(len(seasons)):
 +
print(i,seasons[i])</nowiki>
 +
 +
3)用enumerate遍历
 +
 +
<nowiki>for i,element in enumerate(seasons):
 +
print(i,element)</nowiki>
 +
 +
===map()函数===
 +
map() 函数会根据提供的函数对指定序列做映射。
 +
 +
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
 +
 +
<nowiki>
 +
>>> def square(x):
 +
return x**2
 +
 +
>>> map(square,[1,2,3,4,5])
 +
<map object at 0x0000029D25788B48>
 +
>>> list(map(square,[1,2,3,4,5]))
 +
[1, 4, 9, 16, 25]
 +
>>> list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))
 +
[1, 4, 9, 16, 25]</nowiki>
 +
 +
 +
==应用:人员管理系统==
 +
 +
<nowiki>
 +
#1、打印功能提示
 +
print("="*50)
 +
print("                    商品管理系统")
 +
print("1.添加一个商品")
 +
print("2.删除一个商品")
 +
print("3.修改一个商品")
 +
print("4.查询一个商品")
 +
print("5.查询所有商品")
 +
print("6.退出系统")
 +
print("="*50)
 +
 +
names = []  #定义一个列表存储商品#
 +
while True:  #死循环,让程序多次执行
 +
  #2、获取用户选择
 +
  num = input("请输入选择的功能序号:")
 +
 +
  #3、根据用户选择,执行相应的功能
 +
  if num == '1':
 +
    newName = input("请输入要添加的商品:")
 +
    names.append(newName)
 +
    print(names)
 +
  elif num == '2':
 +
    delName = input("请输入要删除的商品:")
 +
    names.remove(delName)
 +
    print(names)
 +
  elif num == '3':
 +
    alterName = input("请输入要修改的商品:")
 +
    index = names.index(alterName)
 +
    newName = input("请输入修改后的商品:")
 +
    names[index] = newName
 +
  elif num == '4':
 +
    findName = input("请输入要查询的商品:")
 +
    if findName in names:
 +
      print("系统中存在此人")
 +
    else:
 +
      print("查无此人")
 +
  elif num == '5':
 +
    for i in names:
 +
        print(i)
 +
  elif num == '6':
 +
    break;
 +
  else:
 +
    print("选择错误,请重新选择!")
 +
 +
</nowiki>

2022年12月6日 (二) 01:38的最新版本

列表的操作方法

添加元素

  • append()用于向列表尾部追加一个元素,insert()用于向列表任意指定位置插入一个元素
>>> x = [1, 2, 3]
>>> x.append(4)                     #在尾部追加元素

append仅用于增加一个元素,如果希望增加多个元素,可以使用加号,将两个列表合并:

>>> ls =[1,2,3]

>>> lt =[4,5,6]

>>> ls = ls + lt
>>> print(ls)
[1, 2, 3, 4, 5, 6]

insert(i,x)在列表ls中序号i位置上增加元素x,序号i之后的元素序号依次增加。

>> print(ls)
[1, 2, 3, 4, 5, 6]
>>> ls.insert(1,1.5)
>>> print(ls)
[1, 1.5, 2, 3, 4, 5, 6]

删除元素

  • pop()用于删除并返回指定位置(默认是最后一个)上的元素;
  • remove()用于删除列表中第一个值与指定值相等的元素;
  • clear()用于清空列表中的所有元素。这3个方法也属于原地操作
>>> x = [1, 2, 3, 4, 5, 6, 7]
>>> x.pop()                        #弹出并返回尾部元素
7
>>> x.pop(0)                       #弹出并返回指定位置的元素
1
>>> x.clear()                      #删除所有元素
>>> x
[]
>>> x = [1, 2, 1, 1, 2]
>>> x.remove(2)                    #删除首个值为2的元素
>>> del x[3]                       #删除指定位置上的元素
>>> x
[1, 1, 1]

列表排序

  • 列表对象的sort()方法用于按照指定的规则对所有元素进行排序;reverse()方法用于将列表所有元素逆序或翻转。
>>> x = list(range(11))                       #包含11个整数的列表
>>> import random
>>> random.shuffle(x)                         #把列表x中的元素随机乱序
>>> x
[6, 0, 1, 7, 4, 3, 2, 8, 5, 10, 9]
>>> x.sort()                                  #按默认规则排序
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> x.reverse()  

复制列表

  • copy复制列表,而直接赋值的方法不产生新列表
>>> x = list(range(11))
       
>>> y = x.copy()
       
>>> x.clear()
       
>>> print(y)
       
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> x = list(range(11))
       
>>> y = x
       
>>> x.clear()
       
>>> print(y)
       
[]

列表是一个十分灵活的数据结构,当程序需要使用组合数据类型管理批量数据时,请尽量使用列表类型。

练习

  • 请补充横线处的代码,listA中存放了已点的餐单,让Python帮你增加一个“红烧肉”,去掉一个“水煮干丝”。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
listA = ['水煮干丝','平桥豆腐','白灼虾','香菇青菜','西红柿鸡蛋汤']
listA.___①____ ("红烧肉")
listA.____②____ ("水煮干丝")
print(listA)


  • ls 是一个列表,内容如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
ls = [123, "456", 789, "123", 456, "789"]

请补充如下代码,将列表 ls 逆序打印‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

ls = [123, "456", 789, "123", 456, "789"]
___①___
print(ls)

列表的操作函数

  • max()、min()函数用于返回列表中所有元素的最大值和最小值,
  • sum()函数用于返回列表中所有元素之和;
  • len()函数用于返回列表中元素个数,zip()函数用于将多个列表中元素重新组合为元组并返回包含这些元组的zip对象;
  • enumerate()函数返回包含若干下标和值的迭代对象;
  • map()函数把函数映射到列表上的每个元素,filter()函数根据指定函数的返回值对列表元素进行过滤;
  • all()函数用来测试列表中是否所有元素都等价于True,any()用来测试列表中是否有等价于True的元素。
  • 标准库functools中的reduce()函数以及标准库itertools中的compress()、groupby()、dropwhile()等大量函数也可以对列表进行操作。
>>> x = list(range(11))              #生成列表
>>> import random
>>> random.shuffle(x)                #打乱列表中元素顺序
>>> x
[0, 6, 10, 9, 8, 7, 4, 5, 2, 1, 3]
>>> all(x)                           #测试是否所有元素都等价于True
False
>>> any(x)                           #测试是否存在等价于True的元素
True
>>> max(x)                           #返回最大值
10
>>> max(x, key=str)                  #按指定规则返回最大值
9
>>> min(x)
0
>>> sum(x)                    #所有元素之和
55
>>> len(x)                    #列表元素个数
11


any()

any() 函数用于 当元素全部为False时,则返回 False,如果有一个为 True,则返回 True。

元素除了是 0、空、FALSE 外都算 TRUE。

>>> any(['a','b','c','d'])
True
>>> any([0,'a','b','c'])
True

all()

all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。

元素除了是 0、空、None、False 外都算 True。

>>> all(['a', 'b', '', 'd'])
False
>>> all(['a', 'b', 'c', 'd'])
True

enumerate()

>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']

>>> list(enumerate(seasons))

 [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]

普通的for循环:

 

i = 0
seq = ['one', 'two', 'three']
for element in seq:
    print(i, seq[i])
    i += 1

enumerate 循环:

for i, element in enumerate(seasons):
	print(i,element)


遍历列表的三种方法:

1)普通遍历:

 seasons = ['Spring', 'Summer', 'Fall', 'Winter']

for i in seasons:
  print(i)

2)用序号遍历:

for i in range(len(seasons)):
	print(i,seasons[i])

3)用enumerate遍历

for i,element in enumerate(seasons):
	print(i,element)

map()函数

map() 函数会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

>>> def square(x):
	return x**2

>>> map(square,[1,2,3,4,5])
<map object at 0x0000029D25788B48>
>>> list(map(square,[1,2,3,4,5]))
[1, 4, 9, 16, 25]
>>> list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))
[1, 4, 9, 16, 25]


应用:人员管理系统

#1、打印功能提示
print("="*50)
print("                     商品管理系统")
print("1.添加一个商品")
print("2.删除一个商品")
print("3.修改一个商品")
print("4.查询一个商品")
print("5.查询所有商品")
print("6.退出系统")
print("="*50)

names = []  #定义一个列表存储商品#
while True:  #死循环,让程序多次执行
  #2、获取用户选择
  num = input("请输入选择的功能序号:")

  #3、根据用户选择,执行相应的功能
  if num == '1':
    newName = input("请输入要添加的商品:")
    names.append(newName)
    print(names)
  elif num == '2':
    delName = input("请输入要删除的商品:")
    names.remove(delName)
    print(names)
  elif num == '3':
    alterName = input("请输入要修改的商品:")
    index = names.index(alterName)
    newName = input("请输入修改后的商品:")
    names[index] = newName
  elif num == '4':
    findName = input("请输入要查询的商品:")
    if findName in names:
      print("系统中存在此人")
    else:
      print("查无此人")
  elif num == '5':
    for i in names:
        print(i)
  elif num == '6':
    break;
  else:
    print("选择错误,请重新选择!")