Lecture 7: Lists and mutability,dictionaries,pseudocode,introduction to efficiency 列表及可变性,字典,伪代码,效率
Lists and mutability 列表及可变性
>>> L1 = [1, 2, 3]
>>> L2 = L1
>>> print L2
[1, 2, 3]
>>> L1[0] = 4
>>> print L2
[4, 2, 3]
def f(L):
L[0] = 4
L1 = [1,2,3]
L2 = [1,2,3]
L3 = L1
print L1 == L2
f(L1)
print L1 == L2
print L1
print L2
print L3
#输出
True
False
[4, 2, 3]
[1, 2, 3]
[4, 2, 3]
dictionaries 字典
- mutable 可改变的
- not ordered 无序
- generalized indexing 索引
- key ,value pair 键值对
-
EtoF = {‘one‘: ‘un‘, ‘soccer‘: ‘football‘}
print EtoF[‘soccer‘]
print EtoF[0]
print EtoF
NtoS = {1: ‘one‘, 2: ‘two‘, ‘one‘: 1, ‘two‘: 2}
print NtoS.keys()
print NtoS.keys
del NtoS[‘one‘]
print NtoS
L = [[‘un‘, ‘one‘], [‘deux‘, ‘two‘]]
def keySearch(L, k):
for elem in L:
if elem[0] == k: return elem[1]
return None
print keySearch(L, ‘deux‘)
# 输出
football
print EtoF[0]
KeyError: 0
{‘soccer‘: ‘football‘, ‘one‘: ‘un‘}
[1, 2, ‘two‘, ‘one‘]
<built-in method keys of dict object at 0x7fc52bf0b1e0>
{1: ‘one‘, 2: ‘two‘, ‘two‘: 2}
two
pseudo code 伪代码
求直角三角形的斜边:
- input value for base 输入底边 as float
- input value for height 输入高 as float
- sqrt (base**2 + height **2) 计算斜边
- output value in hypotenuse 输出
import math
# Get base
inputOK = False
while not inputOK:
base = input(‘Enter base: ‘)
if type(base) == type(1.0):
inputOK = True
else:
print(‘Error. Base must be floating point number.‘)
# Get Height
inputOK = False
while not inputOK:
height = input(‘Enter height: ‘)
if type(height) == type(1.0):
inputOK = True
else:
print(‘Error. Height must be floating point number.‘)
hyp = math.sqrt(base * base + height * height)
print ‘Base: ‘ + str(base) + ‘,height: ‘ + str(height) + ‘, hyp: ‘ + str(hyp)
改进:
def getFloat(requestMsg, errorMsg):
inputOK = False
while not inputOK:
val = input(requestMsg)
if type(val) == type(1.0):
inputOK = True
else:
print(errorMsg)
return val
base = getFloat(‘Enter base: ‘, ‘Error: base must be a float‘)
height = getFloat(‘Enter height: ‘, ‘Error: height must be a float‘)
hyp = math.sqrt(base * base + height * height)
print ‘Base: ‘ + str(base) + ‘,height: ‘ + str(height) + ‘, hyp: ‘ + str(hyp)
Efficiency 效率
Efficiency – orders of growth
- choice of algorithm 算法选择
- map a problem into a class of algorithms of some efficiency 把问题映射为高效的算法
space & time 时间 & 空间
- how much memory does it take 消耗多少存储空间
- what is the number of the basic steps needed as a function of the input size 进行计算的方法有几步
random access model 随机存取模型
- best case – min
- worst case – max
- expected case – avg
时间: 2024-10-06 04:59:06