python 列表 初始化
目录1)方法一:使用for循环和append()函数2)方法二:使用带计数器变量的while循环和append()3)方法三:使用列表推导(List Comprehension)4)方法四:使用*运算符代码执行时间比较下面我们就来介绍在Python中初始化列表(我们创建大小为1000并使用零初始化的列表)的一些方法。2)方法二:使用带计数器变量的while循环和append()3)方法三:使用列表
目录
2)方法二:使用带计数器变量的while循环和append()
3)方法三:使用列表推导(List Comprehension)
下面我们就来介绍在Python中初始化列表(我们创建大小为1000并使用零初始化的列表)的一些方法。
1)方法一:使用for循环和append()函数
arr = []
for i in range(1000):
arr.append(0)
2)方法二:使用带计数器变量的while循环和append()
arr = []
i = 0
while(i<1000):
arr.append(0)
3)方法三:使用列表推导(List Comprehension)
列表推导(List Comprehension) 是一种数学家用来实现众所周知标记集合的Python方式。它由方括号组成,包含一个表达式,后跟一个for子句,后面跟一个可选的if子句。
表达式可以是我们想要放入列表中的任何类型的对象;由于我们用零初始化列表,因此我们的表达式将只为0。
arr = [0 for i in range(1000)]
4)方法四:使用*运算符
运算符可以用作[object] * n,其中n是数组中元素的数目。
arr = [0]*1000
代码执行时间比较
下面我们来看看这四种方法的执行时间,看看那种方法更快。
示例:我们将计算每种方法在500次上初始化10000个元素的数组所花费的平均时间。
# 导入时间模块以计算时间
import time
# 初始化列表以保存时间
forLoopTime = []
whileLoopTime = []
listComprehensionTime = []
starOperatorTime = []
# 重复此过程500次,并计算所用的平均时间。
for k in range(500):
# 开始时间
start = time.time()
# 声明空列表
a = []
# 执行for循环10000次
for i in range(10000):
a.append(0)
# 停止时间
stop = time.time()
forLoopTime.append(stop-start)
# 开始时间
start = time.time()
# 声明空列表
a = []
i = 0
# 执行while循环10000次
while(i<10000):
a.append(0)
i+= 1
stop = time.time()
whileLoopTime.append(stop-start)
# 开始时间
start = time.time()
# 使用列表推导(List Comprehension) 来初始化列表
a = [0 for i in range(10000)]
stop = time.time()
listComprehensionTime.append(stop-start)
# 开始时间
start = time.time()
# 使用*运算符
a = [0]*10000
stop = time.time()
starOperatorTime.append(stop-start)
print("for循环所用的平均时间:" + str(sum(forLoopTime)/100))
print("while循环所用的平均时间:" + str(sum(whileLoopTime)/100))
print("列表推导所用的平均时间:" + str(sum(listComprehensionTime)/100))
print("* 运算符所用的平均时间: " + str(sum(starOperatorTime)/100))
输出结果
for循环所用的平均时间:0.008704814910888672
while循环所用的平均时间:0.0133302903175354
列表推导所用的平均时间:0.003199863433837891
* 运算符所用的平均时间: 0.00023694276809692382
注意:时间将根据执行此代码的平台而有所不同。这些时间仅用于研究这些初始化方法的相对性能。
● 可以看出,for和while循环所用时间几乎相同。
● 列表推导的性能比for和while循环要好得多,前者的速度要快3-5倍。当我们尝试创建1-1000的数字列表时,可以看到另一个这种差异的例子。使用列表推导比使用append()要好得多。
`a = [i ``for` `i in range(1,1001)]`
● 使用*运算符比其余方法更快,这是您应该初始化列表的方式
更多推荐
所有评论(0)