在实例化和检索元素时,元组和列表之间是否存在性能差异?
在优化我的代码时,我意识到以下内容:
>>> from timeit import Timer as T
>>> T(lambda : 1234567890 / 4.0).repeat()
[0.22256922721862793, 0.20560789108276367, 0.20530295372009277]
>>> from __future__ import division
>>> T(lambda : 1234567890 / 4).repeat()
[0.14969301223754883, 0.14155197143554688, 0.14141488075256348]
>>> T(lambda : 1234567890 * 0.25).repeat()
[0.13619112968444824, 0.1281130313873291, 0.12830305099487305]
Run Code Online (Sandbox Code Playgroud)
并且:
>>> from math import sqrt
>>> T(lambda : sqrt(1234567890)).repeat()
[0.2597470283508301, 0.2498021125793457, 0.24994492530822754]
>>> T(lambda : 1234567890 ** 0.5).repeat()
[0.15409398078918457, 0.14059877395629883, 0.14049601554870605]
Run Code Online (Sandbox Code Playgroud)
我假设它与C实现python的方式有关,但我想知道是否有人会解释为什么会如此?
元组内部的值只是对列表的引用,如果我更改列表中的值,一切都仍然有序,对吧?我想确保如果我这样做,我将不会开始遇到混乱的错误.
我被教授布置的作业困住了。它要求我执行以下操作:
用 Python 编写一个程序,对用户的驾驶执照考试答案进行评分,该考试由 10 道多项选择题组成。
问题 1 到问题的正确答案可以存储在名为 Correct_answers 的列表中,初始值如下:
Correct_answers=['B','D','C','B','C','D','A','B','D','A']
您的程序应提示用户在一行中输入 10 个问题的答案,并用空格分隔。用户按下 Enter 键后,将构建答案列表,实验 #5 会解释如何执行此操作。
如果您愿意,您可以存储列表中的答案,而不是从键盘读取答案。这将节省大量时间,因为您在运行程序时无需输入答案。您应该更改您的答案,但只是为了测试目的。
获得答案列表后,将每个值与正确答案列表进行比较,并记录正确答案的数量。
最后,显示 10 个答案中的正确答案数并显示百分比。因此,如果 5 个答案正确,您应该显示 5 个正确答案,即 50%
另请注意,您必须使用functions()来解决该程序。
这是我的代码:
def read_student():
contents = ()
for x in range (0,10):
data = input('Enter your answers for the 10 questions in a
single line separated by a blank')
contents.append(data)
return contents
def pass_fail(correct_answers, student_answers):
num_correct = 0
for i in range(0, len(correct_answers)):
if correct_answers[i] == student_answers[i]:
num_correct = num_correct + …Run Code Online (Sandbox Code Playgroud) 我正在阅读python语言参考,我发现以下内容:
当我们谈论容器的可变性时,只暗示了直接包含的对象的身份.因此,如果不可变容器(如元组)包含对可变对象的引用,则如果更改了可变对象,则其值会更改.
我是否正确地认为元组可以被认为是基于它包含的东西的可变和不可变的?例如,如果一个元组只包含字符串,那么它可以是不可变的,如果它包含至少一个像列表一样的可变引用,那么元组本身就是可变的.
python ×5
list ×2
performance ×2
tuples ×2
attributes ×1
c ×1
python-2.7 ×1
python-3.x ×1
reference ×1