3.4使用列表时,避免索引错误
假如你有一个三个包含三个元素的列表,却要求获取第四个元素(类似于C中的数组上溢,非法访问内存)
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles[3])
导致索引错误:
Traceback (most recent call last):
File "Day05.py", line 3, in <module>
print(motorcycles[3])
IndexError: list index out of range
这是因为python等语言都是从C进化来的,也就是说,都是从0开始计数的。遇到这种情况,可以尝试将索引-1,再次运行。
一般,如果是获取最后一个元素的话,可以直接用索引-1(只要列表不为空,就能返回最后一个元素)。由于程序对代码进行了动态处理,所以当遇到索引问题时,可以将列表或其长度打印出来以解决逻辑问题。
3.5小结
列表是什么?
列表由一系列按特定顺序排序的元素组成的,就像数学里面的集合。元素可以是任何值得记录的事物,如家庭成员姓名,字母,数字等等。(元素之间可以没有任何关系)因为元素通常不止一个,所以列表通常引用复数名称。
如何使用其中的元素?
通过切片和索引两种方式。索引是从中获取单个值的方法,切片是获取多个值的方法(感觉得到的还是一个列表)。
motorcycles = ['honda', 'yamaha', 'suzuki'] #索引,有正向和逆向两种数数方式 print(motorcycles[0]) print(motorcycles[1]) print(motorcycles[2]) print(motorcycles[-1]) print(motorcycles[-2]) print(motorcycles[-3]) #切片,下例表示打印从motorcycles第一个元素开始到第二个元素,也就是对应着motorcycles[0]、[1],而不打印motorcycles[2] print(motorcycles[0:2]) -----------------------------输出--------------------------------------------------------- honda yamaha suzuki suzuki yamaha honda ['honda', 'yamaha']
如何定义列表以及增删元素?
类似于数组定义方式,但是不需要指定元素长度,也不可以省略元素值(???)
增加元素可以通过——append()方法从列表末尾增加;也可以是方法insert()增加至列表中指定位置处(需要指定索引)。
删除元素可使用del、pop、remove等三种方式。
del语句可删除任意位置处的列表元素(只要知道索引),但删除后你无法在访问那个值了。
方法pop()删除列表末尾的元素,但你能够接着使用它。(列表就像一个栈,删除列表末尾元素就相当于弹出栈顶元素。)
方法remove()根据值删除元素,也可以接着使用(使用一个中间变量将其值保留下来)
#Day05 2022/1/26 motorcycles = ['honda', 'yamaha', 'suzuki'] #方法append() motorcycles.append('ducati') print(motorcycles) #方法insert() motorcycles.insert(2, 'emmmm') print(motorcycles) #del del motorcycles[2] print(motorcycles) #方法pop() tem = motorcycles.pop() print(motorcycles) print(tem) #方法remove() motorcycles.remove('suzuki') print(motorcycles) ---------------------输出------------------- ['honda', 'yamaha', 'suzuki', 'ducati'] ['honda', 'yamaha', 'emmmm', 'suzuki', 'ducati'] ['honda', 'yamaha', 'suzuki', 'ducati'] ['honda', 'yamaha', 'suzuki'] ducati ['honda', 'yamaha']
如何进行永久性排序?
方法sort()按字母表顺序进行永久性排序,可传递参数reverse = True进行反向排序。
方法reverse()颠倒着打印列表,与字母表顺序无关,就是和原列表顺序相反。
#sort()永久性对列表排序 cars = ['bmw', 'audi', 'toyuta', 'subaru'] cars.sort() print(cars) #与字母顺序相反传递参数reverse=True cars.sort(reverse = True) print(cars) #reverse永久性颠倒顺序,不是按照字母表顺序,而是与原顺序相反 cars.reverse() print("Now reverse it:") print(cars) ------------输出----------------------------------------- ['audi', 'bmw', 'subaru', 'toyuta'] ['toyuta', 'subaru', 'bmw', 'audi'] Now reverse it: ['audi', 'bmw', 'subaru', 'toyuta']
如何为展示列表进行临时排序?
函数sorted(),也可传递参数reverse = True进行反向临时排序
#sorted对列表临时排序 也可以排序reveerse=True print("Here is the sorted list:") print(sorted(cars)) print("Here is the orignal list:") print(cars) -----------输出------------------------------ Here is the sorted list: ['audi', 'bmw', 'subaru', 'toyuta'] Here is the orignal list: ['bmw', 'audi', 'toyuta', 'subaru']
如何确定列表长度?
函数len()快速获得
#获取表的长度 cars = ['bmw', 'audi', 'toyuta', 'subaru'] print("Got the length of the list:") print(len(cars)) ----------------输出---------------------- Got the length of the list: 4