欢迎光临散文网 会员登陆 & 注册

列表简介

2022-05-01 22:01 作者:创世十鹰  | 我要投稿

#修改,添加,删除列表元素  #a = 1;b=2;c=3;  #print(a*b,b*c);前面遗留的问题

#你创建的大多数列表将是动态的,意味着创建列表后,将随着程序运行增删元素。

#比如,创建一个游戏,玩家射杀从天而降的外星人。为此,可在开始时将一些外星人存储在列表中,

#然后每当外星人被射杀时,都将其从列表中删除,而每当有新的外星人出现在屏幕上时,都将其添加到列表中。

#在整个游戏运行期间,外星人列表的长度将不断变化。


##修改列表元素##

###修改列表元素,可指定列表名和要修改的元素索引,再指定该元素的新值。###

motorcycles = ['honda','yamaha','suzuki'];

print(motorcycles);          #['honda', 'yamaha', 'suzuki']

# 修改列表元素 #

motorcycles[0] = 'ducati';

print(motorcycles);          #['ducati', 'yamaha', 'suzuki']


#你可以修改任何列表元素的值,而不仅仅是第一个元素的值



##在列表中添加元素##

#列如,你希望游戏中出现新的外星人,添加可视化数据或给网站添加新注册的用户。

#python提供了多种在既有列表中添加新数据的方式

###在列表末尾添加元素###

#在列表末尾添加元素时,最简单的方式是,将元素附加到列表。给列表附加元素时,它将添加到列表末尾。


motorcycles = ['honda','yamaha','suzuki'];

print(motorcycles);   #['honda', 'yamaha', 'suzuki']


motorcycles.append('xiaoying');

print(motorcycles);   #['honda', 'yamaha', 'suzuki', 'xiaoying']


#方法append()将元素'xiaoying'添加到列表末尾,而不会影响列表中的其他所有元素。

##方法append()让动态地创建列表易如反掌。##

#例如,你可以创建一个空列表,在使用一系列函数调用append()来添加元素。

#下面来创建一个空列表,再在其中添加元素'honda','yamaha','suzuki'


motorcycles = [];

motorcycles.append('honda');

motorcycles.append('yamaha');

motorcycles.append('suzuki');

print(motorcycles);           #['honda', 'yamaha', 'suzuki']


#这种创建列表的方式极其常见,因为经常要等程序运行后,你才知道用户要在程序中存储哪些数据。

#为控制用户,可创建一个空列表,用于存储用户将要输入的值,然后将用户提供的每个新值添加到列表中。



##在列表中插入元素##

###使用方法insert()可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值。


motorcycles = ['honda','yamaha','suzuki'];

motorcycles.insert(0,'xiaoying');

motorcycles.insert(3,'XY',);

print(motorcycles);         #['xiaoying', 'honda', 'yamaha', 'XY', 'suzuki']


##这个示例中,值'xiaoying'和值'XY'被插入到列表开头和倒数第二。方法insert()在索引0和3处添加空间,

##并将值'xiaoying'和值'XY'存储到这个地方。

#这种操作将列表中的既有的每个元素都向右移一个位置。

###注意,列表插入后索引就会更新###



motorcycles = ['honda','yamaha','suzuki'];

motorcycles.insert(3,'xiaoying');

print(motorcycles);         #['honda', 'yamaha', 'suzuki', 'xiaoying']

motorcycles.insert(4,'bycycle');

print(motorcycles);         #['honda', 'yamaha', 'suzuki', 'xiaoying', 'bycycle']



##从列表中删除元素##

#经常需要删除列表中的一个或多个元素。例如,玩家将空中的一个外星人射杀后,

#你可能需要将其从存活的外星人列表中删除。当用户在你创建的web应用中注销账户时,

#你就需要将该用户从活动用户列表中删除。你可以根据位置或值来删除列表中的元素。


###使用del语句永久删除元素###


motorcycles = ['honda','yamaha','suzuki'];

print(motorcycles);   #['honda', 'yamaha', 'suzuki']


del motorcycles[1];

print(motorcycles);   #['honda', 'suzuki']这里删除了索引为1的元素'yamaha'


###del可以删除任意位置处的列表元素,条件是知道其索引,

#并且是永久删除,无法再访问它(也就是值删除的元素哦)###


print(motorcycles[1]);   #suzuki



#使用方法pop()删除元素

#有时候,你需要将元素从列表中删除,并接着使用它的值,例如,你可能需要获取刚被击杀的外星人的x和y的坐标,

#以便在相同位置显示爆炸效果,在web应用程序中,你可能要将用户从活跃成员列表中删除,

#并将其加入到非活跃成员列表中。


#方法pop()删除列表末尾的元素,并让你能够接着使用它。术语弹出pop()源自这样的类比,列表就像一个栈,

#而删除列表末尾的元素相当于弹出栈顶元素。


#从列表motorcycle中弹出一款摩托车

#定义并打印列表motorcycles

motorcycles = ['honda','yamaha','suzuki']

print(motorcycles) #['honda', 'yamaha', 'suzuki']


#从这个列表中弹出一个值,并将其赋给变量popped_motorcycle中,然后打印这个列表,以核实从中删除了一个值。

#最后打印弹出的值,以证明我们依然能访问被删除的值

popped_motorcycle = motorcycles.pop()

print(motorcycles)         #['honda', 'yamaha']

print(popped_motorcycle)   #suzuki


#输出表明,列表末尾的值'suzuki'已删除,它现在被赋给了变量popped_motorcycle

#方法pop()有什么用呢?假设列表中的摩托车是按购买的时间存储的,就可以使用pop()打印一条消息,

#指出最后购买的是哪款摩托车


motorcycles = ['honda','yamaha','suzuki']

last_owned = motorcycles.pop()

print(f"The last motorcycle I owned was a {last_owned.title()}.")  #The last motorcycle I owned was a Suzuki.


##弹出列表中任意位置处的元素##

#实际上,可以使用pop()来删除任意位置的元素,只需要在圆括号中指定要删除元素的索引即可



motorcycles = ['honda','yamaha','suzuki']

last_owned = motorcycles.pop(1)

print(f"The last motorcycle I owned was a {last_owned.title()}.")   #The last motorcycle I owned was a Yamaha.


#但是别忘了,每当你使用pop()时,被弹出的元素就不在列表中了

#总结,del语句删除的元素就不能再访问了,方法pop()删除元素后还能继续使用它



###根据值删除元素###

#有时候,不知道要删除的值在列表中的位置,如果只知道要删除元素的值,可以使用方法remove()


motorcycles = ['honda','yamaha','suzuki','ducati']

print(motorcycles)   #['honda', 'yamaha', 'suzuki', 'ducati']

#假设从列表motorcycles中删除值'ducati'

motorcycles.remove('ducati')

print(motorcycles)   #['honda', 'yamaha', 'suzuki']


#使用方法remove()从列表中删除元素,也可以继续使用它。

#打印删除值'ducati'并打印一条消息,指出从列表中将其删除的原因


motorcycles = ['honda','yamaha','suzuki','ducati']

print(motorcycles)


#将值'ducati'赋给变量too_expensive

too_expensive = 'ducati'


motorcycles.remove(too_expensive)

print(motorcycles)

print(f"\nA {too_expensive.title()} is too expensive for me")   #A Ducati is too expensive for me


#方法remove()只能删除第一个指定的值,如果要删除的值在列表中出现多次,就需要使用循环来确保每个值都删除


motorcycles = ['honda','yamaha','ducati','suzuki','ducati']

print(motorcycles)       #['honda', 'yamaha', 'ducati', 'suzuki', 'ducati']

too_expensive = 'ducati'

motorcycles.remove(too_expensive)

print(motorcycles)       #['honda', 'yamaha', 'suzuki', 'ducati']





###组织列表###

#创建的列表中,元素排列顺序常常是无法预测的,因为你并非总能控制用户提供数据的顺序。

#有时候,你希望保留列表元素最初的排列顺序,而有时候你又需要调整排列顺序


###使用方法sort()对列表永久排序###

#假设让汽车列表按字母顺序排列,为简化这项任务,假设列表中使用值都是小写的


##建立一个cars.py文件(其他文件自己取名,后面不再演示)


cars = ['bmw','audi','toyota','subaru']

cars.sort()

print(cars)   #['audi', 'bmw', 'subaru', 'toyota']


#方法sort()永久性地修改列表元素的排列顺序。现在汽车按字母顺序排列,再也无法恢复到原来的排列顺序


###还可以按与字母相反的顺序排列列表元素,只需向sort()方法传递参数reverse=True即可,同样也是永久性地修改

cars = ['bmw','audi','toyota','subaru']

cars.sort(reverse=True)

print(cars)   #['audi', 'bmw', 'subaru', 'toyota']   #['toyota', 'subaru', 'bmw', 'audi']



##使用函数sorted()对列表临时排序##

#保留列表元素原来的排列顺序,同时以特定顺序呈现它们,不会影响列表中的原始排列顺序,可使用函数sorted()


cars = ['bmw','audi','toyota','subaru']

print('Here is the original list:')

print(cars)


print('Here is the sorted list:')

print(sorted(cars))


print('Here is the original list again:')

print(cars)


'''

Here is the original list:

['bmw', 'audi', 'toyota', 'subaru']

Here is the sorted list:

['audi', 'bmw', 'subaru', 'toyota']

Here is the original list again:

['bmw', 'audi', 'toyota', 'subaru']

'''


##首先按原始打印顺序打印列表,再按字母顺序显示列表,以特定顺序显示列表后,

##最后确认列表元素的排列顺序与以前相同

###当然也可以按与字母相反顺序显示列表,[也就是传递参数reverse=True],print(sorted(cars,reverse=True))###


#当然并非所有的值都是小写的,按字母顺序排列列表要复杂些,决定排列顺序时,有多种解读大写字母的方式

#要指定准确的排列顺序,可能比我们这里所做的要复杂。然而,大多数排序方式是以本节介绍的知识为基础的



###倒着打印列表###

#要反转列表元素的排列顺序,使用方法reverse()


#假设汽车列表是按购买时间排列的,可轻松地按相反的顺序排列其中的汽车

cars = ['bmw','audi','toyota','subaru']

print(cars)             #['bmw', 'audi', 'toyota', 'subaru']

cars.reverse()

print(cars) #['subaru', 'toyota', 'audi', 'bmw']


#####注意:reverse()方法,不是按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序#####

###方法reverse()也是永久性地修改列表元素的排列顺序,但随时可以恢复到原来的顺序,只需再调用一次方法reverse()即可



##确定列表的长度##

#使用函数len()可快速获悉列表的长度,

cars = ['bmw','audi','toyota','subaru','xiaoying']

print(len(cars))  #5


#函数len()很有用,如明确还有多少个外星人未被击杀,明确需要管理多少项可视化数据,计算网站有多少注册用户,等等...


###Python计算列表元素数时是从1开始的,因此确定列表长度时,你应该不会遇到差一错误



###使用列表时避免索引错误###


#只有三个元素,你却要访问第4个元素,这将导致索引错误


motorcycles = ['honda','yamaha','suzuki']

# print(motorcycles[3])


'''

Traceback (most recent call last):

  File "D:\python\python_work\operating_elements_list.py", line 236, in <module>

    print(motorcycles[3])

IndexError: list index out of range

'''


#Python试图向你提供位于索引3处的元素,但它搜索列表motorcycles时,却发现索引为3处没有元素。

#鉴于列表索引差一的特征,这种错误很常见。有些人从1开始数,因此以为第三个元素的索引是3。然而在Python中

#第三个元素的索引是2,因为索引是从0开始的。

#索引错误就意味着Python在指定索引处找不到元素。程序发生索引错误时,请尝试将指定的索引减1,然后再运行程序,看看结果是否正确


###别忘了,每当需要访问最后一个列表元素时,都可以使用索引-1,(多个元素中,当然还可以使用索引-2,-3...)

###这在任何情况下都行之有效,即便你最后一次访问列表后,其长度发生变化。索引-1总是返回最后一个列表元素


motorcycles = ['honda','yamaha','suzuki']

print(motorcycles[-1])   #suzuki


#仅当列表为空时,这种索引-1访问最后一个元素才会导致错误

motorcycles = []

#print(motorcycles[-1])


#列表motorcycles不包含任何元素,因此Python返回一条索引错误消息


'''

Traceback (most recent call last):

  File "D:\python\python_work\operating_elements_list.py", line 258, in <module>

    print(motorcycles[-1])

IndexError: list index out of range


'''

###注意:发生索引错误却找不到方法时,请尝试将列表或其长度打印出来。列表可能与你以为的截然不同,

###在程序对其进行了动态处理时尤为如此。通过查看列表或其包含的元素数,可帮助你找出这种逻辑错误。

列表简介的评论 (共 条)

分享到微博请遵守国家法律