我 的 个 人 主 页: 失心疯的个人主页
入 门 教 程 推 荐 : Python零基础入门教程合集
虚 拟 环 境 搭 建 : Python项目虚拟环境(超详细讲解)
PyQt5 系 列 教 程: Python GUI(PyQt5)文章合集
Oracle数据库教程: Oracle数据库文章合集
优 质 资 源 下 载 : 资源下载合集
变量 = [元素1, 元素2, ...]
变量 = list()
变量 = range(start, end, step)
nums = range(1, 99999)
# 在python2中会直接生成一个[1, 2,...99998]的列表,耗费内存
# 在python3中只会直接生成一个range(1, 99999)的生成器,节约内存。用一个生成一个
映射解析(两个列表中元素个数一对一变更)
变量 = [表达式 for 变量1 in 原列表]
# 示例
nums = [1, 2, 3, 4, 5]
# 列表推导式生成一个nums元素乘方的新列表
resultlist = [num ** 2 for num in nums]
过滤(推导出来的列表元素个数不等于原列表的元素个数)
变量 = [表达式 for 变量1 in 原列表 if 条件]
# 示例
nums = [1, 2, 3, 4, 5]
# 利用列表推导式生成一个nums中奇数的乘方的新列表
resultlist1 = [num ** 2 for num in nums if num % 2 != 0]
# 上面推导式相当于下面
for num in nums:
if num % 2 !=0:
resultlist1 = num ** 2
resultlist2 = [num ** 2 for num in nums for num2 in nums]
# 上面推导式相当于下面
for num in nums:
for num2 in nums:
resultlist2 = num ** 2
append()
分类
对象方法
作用
在列表的最后追加一个新的元素
语法
list.append(object)
参数
object:想要追加的元素
返回值
返回None,直接修改原列表
insert()
分类
对象方法
作用
在列表指定索引的前面插入一个新的元素
语法
list.insert(index, object)
参数
index:指定索引
object:想要插入的元素
返回值
返回None,直接修改原列表
extend()
分类
对象方法
作用
将一个可迭代序列中的元素全部追加到原列表中
语法
list.extend(iterable)
参数
iterable:可迭代序列(集合、字符串、列表、元组等)
返回值
返回None,直接修改原列表
乘法运算
作用
使列表中的元素重复指定
语法
list * n
返回值
返回一个新列表,新列表元素是原列表元素重复n次
加法运算
作用
将一个列表中的元素与原列表中的元素组合在一起,生成一个新列表
语法
list1 + list2
参数
返回值
返回一个新列表,新列表的元素是两个相加列表的所有元素
del 语句
分类
del语句,并非方法
作用
删除列表中指定索引的元素
语法
del list[index] # 删除指定索引位置的元素
del list # 删除整个列表对象
参数
index:索引号
返回值
返回None,直接修改原列表
pop()
分类
对象方法
作用
移除并返回列表中指定索引位置的元素,默认移除最后一个元素
语法
list.pop(index=-1)
参数
index:索引号,默认是-1
返回值
返回被移除的元素,直接修改原列表
注意索引越界,程序会报错
renove()
分类
对象方法
作用
移除列表中最左侧指定元素
语法
list.remove(object)
参数
object:指定要移除的元素
返回值
返回None,直接修改原列表
移除不存在的元素时,程序会报错
list[index] = new_value
list[index]
list.index(value, start, stop)
list.count(values)
len(list)
list[start: end: step]
概念
通过枚举函数,生成一个新的对象
作用
函数用于将一个可遍历的对象(列表、元组、字符串等)组合为一个索引序列,同时列出数据的索引和数据本身
语法
enumerate(seq, start)
参数
seq:可迭代对象
start:起始索引位置
返回值
返回一个包含数据的索引和数据本身的序列对象
示例
nums = ['a', 'b', 'c', 'd', 'e', 'f']
print(enumerate(nums))
print(list(enumerate(nums))
# ----输出结果----
# enumerate(nums)
<enumerate object at 0x0000014CED186840>
# list(enumerate(nums) 将enumerate转换成列表
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f')]
for 变量 in list:
循环操作执行代码
for 变量 in range(len(list)):
循环操作执行代码
for 变量1, 变量2 in enumerate(list, start):
循环操作执行代码
# 变量1存储的是列表的索引
# 变量2存储的是列表的元素
for 变量 in iter(list):
循环操作执行代码
import collections
isinstance(obj, collections.Iterable)
# 判断obj对象是否有collections.Iterable(可迭代)特性
import collections
isinstance(obj, collections.Iterator)
# 判断obj对象是否有collections.Iterator特性
iter(Iterable)
iter(str)
iter(list)
iter(tuple)
iter(dict)
.
.
.
# 迭代器
nums = ['a', 'b', 'c', 'd', 'e', 'f']
# 生成一个迭代器
it = iter(nums)
# print(next(it)) # ---> a
# print(next(it)) # ---> b
# print(next(it)) # ---> c
# print(next(it)) # ---> d
# print(next(it)) # ---> e
for v in it:
print(v)
# 输出所有元素
print('=============')
for v in it:
print(v)
# 没有输入任何内容,因为迭代器不会被多次迭代
# 迭代完毕后指针已经指向迭代器末尾
# 判定原始是否在列表中
元素 in 列表
# 示例
nums = ['a', 'b', 'c']
print('b' in nums) # ---> True
print('e' in nums) # ---> False
# 判断元素是否不在列表中
元素 not in 列表
# 示例
nums = ['a', 'b', 'c']
print('b' not in nums) # ---> False
print('e' not in nums) # ---> True
cmp()
函数作用
针对每个元素,从左到右逐一比较,实际比较的是元素的ASCII码
语法
cmp(value1, value2)
返回值
当左边值 > 右边值,返回1
当左边值 = 右边值,返回0
当左边值 < 右边值,返回-1
示例
cmp(1, 2) # ---> -1
cmp(5, 3) # ---> 1
cmp([1, 2, 3], [2, 3]) # ---> -1
# 分析:两个列表元素从左往右进行逐一比较:第一个元素1 < 2,后面的元素则不再比较,直接返回 -1
cmp([1, 2, 3], [1, 1, 5]) # ---> 1
# 分析:两个列表元素从左往右进行逐一比较:
第一个元素1 = 1,继续比较第二个元素 2 > 1,后面的元素则不再比较,直接返回 1
cmp()
函数在python3已经不再使用[1, 2, 3] > [2, 3] # ---> False
# 分析:两个列表元素从左往右进行逐一比较:第一个元素1 < 2,后面元素不再比较,直接返回False
[1, 2, 3] == [1, 2, 3] # ---> True
# 分析:两个列表元素从左往右进行逐一比较:全部相等,返回True
sorted()
函数分类
内置函数
作用
可以对所有可迭代对象进行排序
语法
sorted(itrearble, key=None, reverse=False)
参数
itrearble:可迭代对象
key:排序关键字,值为一个函数,此函数只有一个参数且返回一个值用来进行比较
reverse:控制升序/降序,默认False,升序
返回值
一个按照需求排好序的列表
示例1:不带key参数,直接排序
ls = [('失心疯1', 14), ('失心疯4', 13), ('失心疯3', 15), ('失心疯5', 12), ('失心疯2', 11)]
result = sorted(ls)
print(result)
# -----输出结果-----
[('失心疯1', 14), ('失心疯2', 11), ('失心疯3', 15), ('失心疯4', 13), ('失心疯5', 12)]
# 默认按第一个元素进行排序
示例2:通过key参数,进行排序
ls = [('失心疯1', 14), ('失心疯4', 13), ('失心疯3', 15), ('失心疯5', 12), ('失心疯2', 11)]
def getkey(x):
"""返回可迭代对象的第二个元素"""
return x[1]
result1 = sorted(ls, key=getkey, reverse=True)
result2 = sorted(ls, key=getkey, reverse=False)
print(result1)
print(result2)
# -----输出结果-----
[('失心疯3', 15), ('失心疯1', 14), ('失心疯4', 13), ('失心疯5', 12), ('失心疯2', 11)]
[('失心疯2', 11), ('失心疯5', 12), ('失心疯4', 13), ('失心疯1', 14), ('失心疯3', 15)]
# 指定key参数,是通过getkey函数获取列表元素的第二个值进行排序,一个降序,一个升序
sort()
列表对象方法分类
列表对象方法
作用
对列表元素进行排序
语法
list.sort(key=None, reverse=False)
参数
key:排序关键字,值为一个函数,此函数只有一个参数且返回一个值用来进行比较
reverse:控制升序/降序,默认False升序
返回值
返回None,直接修改原列表对象
示例
l = [1, 4, 7, 2, 6, 3, 5]
r = l.sort()
print('r:', r)
print('l:', l)
# -----输出结果----
r: None
l: [1, 2, 3, 4, 5, 6, 7]
l = [('失心疯1', 14), ('失心疯4', 13), ('失心疯3', 15), ('失心疯5', 12), ('失心疯2', 11)]
def getkey2(x):
return [1]
r1 = l.sort(key=getkey, reverse=True)
print('r1:', r1)
print('l:', l)
r2 = l.sort(key=getkey, reverse=True)
print('r2:', r2)
print('l:', l)
# ----输出结果-----
r: None
l: [('失心疯3', 15), ('失心疯1', 14), ('失心疯4', 13), ('失心疯5', 12), ('失心疯2', 11)]
r2: None
l: [('失心疯3', 15), ('失心疯1', 14), ('失心疯4', 13), ('失心疯5', 12), ('失心疯2', 11)]
sorted()
与sort()
的区别
sorted()
是内置函数,sort()
是列表对象方法sorted()
可以对所有可迭代对象进行排序,sort()
只能对列表元素进行排序sorted()
有返回值,不改变原对象,sort()
没有返回值,直接修改原列表import random
random.shuffle(list)
reverse()
分类
列表对象方法
作用
将列表中所有元素按原顺序进行倒序排列
语法
list.reverse()
参数
返回值
返回None,直接修改原列表对象
示例
l = [1, 2, 4, 5, 7, 3, 9]
r = l.reverse()
print('r:', r)
print('l:', l)
# -----输出结果-----
r: None
l: [9, 3, 7, 5, 4, 2, 1]
l = [1, 2, 4, 5, 7, 3, 9]
r = l[::-1]
print('r:', r)
print('l:', l)
# -----输出结果-----
r: [9, 3, 7, 5, 4, 2, 1]
l: [1, 2, 4, 5, 7, 3, 9]