1. 插入元素
- arr.append() #在列表的最后一个位置插入元素
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles.append('ducati')
print(motorcycles)
- arr.insert(position, ele) #在指定位置插入元素。这个指定位置是原本列表的位置,不是新元素的位置。插入新元素后,其他元素往右边移动一个位置。position为正数或者负数结果稍微有点不一样
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(0, "Hao jue")
print(motorcycles)
#打印出['Hao jue', 'honda', 'yamaha', 'suzuki']
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(-1, "Hao jue")
print(motorcycles)
#打印出['honda', 'yamaha', 'Hao jue', 'suzuki']
2. 删除元素
- list.pop() #弹出末尾的最后一个元素,返回弹出的元素。list也已经被更新
- list.pop(position) #弹出指定位置的元素,返回弹出的元素。list也已经被更新
- del list[0] #删除指定位置的元素,返回弹出的元素。list也已经被更新
- list.remove(ele) #按照值来删除元素。如下代码会报错,按照值来删除元素,list必须有这个元素。仅仅删除一次。如果要多次删除,就需要用循环。
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.remove("nih")
print(motorcycles)
3. 简单排序
- list.sort()
- cars.sort(reverse=True)
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True) #按照字母降序排列。永久性改变一个list。这个方法返回None。
cars.sort() #按照字母顺序升序
- sorted()方法。这个方法返回一个新的数组,原来的数组不变
cars = ['bmw', 'audi', 'toyota', 'subaru']
sorted(cars)
sorted(cars, reverse=True)
- list.reverse() 反转列表。reverse()不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序。方法reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse()即可。
4. 数值列表
- range(1, 10),返回的不是一个list。需要用list(range(1,))来返回list。
- 对于需要用到index来访问list的情况,或者需要访问数字的情况下,可以用如下:
for i in range(1,5):
print(cats[i])
- 在这个示例中,range()只是打印数字1到4,函数range()让Python从你指定的第一个值开始数,并在到达你指定的第二个值后停止,输出不包含第二个值(这里为5)。要打印数字1~5,需要使用range(1,6)。
- 使用函数range()时,还可指定步长。
for even in range(2,11,2):
print(even)
- 步长可以为负数。如下打印出2和1
- 通过这个,可以实现反向访问list。
for even in range(2,0,-1):
print(even)
5.对数字列表进行简单的统计计算
- 可以使用min、max、sum函数。如果传入的list为空,就会报错。
digits = [1,2,3,4,5,6]
print(digits, min(digits), max(digits), sum(digits))
sum(range(1,5))
6. 列表解析
- 列表解析让你只需编写一行代码就能生成列表。
squares = [value**2 for value in range(1,11)]
print(squares) #打印出[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
- 要使用这种语法,首先指定一个描述性的列表名,如squares;然后,指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。如上代码中,表达式为value**2,它计算平方值。
- 接下来,编写一个for循环,用于给表达式提供值,再加上右方括号。for循环为for value in range(1,11),它将值1~10提供给表达式value**2。请注意,这里的for语句末尾没有冒号。
- 表达式还可以是一个函数。
- 列表解析事实上就是一个for循环。
sums = [sum(range(1,i+1)) for i in range(1,11)]
def get_sum(i):
return sum(range(1, i + 1))
sums = [get_sum(i) for i in range(1,11)]
print(sums)
- 注意sep这个参数,用来给print方法指定分割符。默认是空格。
digits = list(range(1, 1000001))
print(min(digits), max(digits), sum(digits), end=";", sep=";")
带if的列表解析
- 带有if的列表解析。很容易理解,满足if条件的value才保留下来。
- 这里可以用步长来处理。
digits = [i for i in range(3,31) if i%3==0]
print(digits) #[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
多变量的列表解析
digits = [(x,y) for x in range(1,5) for y in range(1,6) if y >=2 ]
print(digits)
#返回[(1, 2), (1, 3), (1, 4), (1, 5), (2, 2), (2, 3), (2, 4), (2, 5)]
7. 切片
- 访问list的指定范围的部分元素,称之为切片。
- list[start:end]返回一个新的list。
- 要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range()一样,Python在到达你指定的第二个索引前面的元素后停止。要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0、1和2的元素。
- 当start为空,表示从头开始。end为空,表示直到结尾(包含最后一个)。
- start和end都可以为空,表示全部的list元素,用来list复制
- 当end超过list元素个数的时候,不会报错,会把start开始的全部元素都切片出来。
- 同样的,start和end都可以用负数。
- 当start大于end的时候,不会报错,返回空list,即[]
players = ["charles", "martina", "michael", "florence", "eli"]
for player in players[0:3]:
print(player)
new_players = players[:]
8.元组(tuple)
- python用()表示一个元组。列表是可以修改的,而不可变的列表被称为元组。
- 元组的元素不能修改,但是存储元组的变量是可以重新赋值的
dimensions = (200, 50)
print(dimensions)
dimensions = (200, 500)
print(dimensions)
9. 数组合并
list1 = [1, 2, 3]
list2 = [4, 5, 6]
merged_list = list1 + list2
##或者merged_list = list1.extend(list2)
print(merged_list) # 输出: [1, 2, 3, 4, 5, 6]