MIT公开课: Python 笔记7 列表及可变性,字典,效率

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 字典

3wschool python dictionary

  • 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

MIT公开课: Python 笔记7 列表及可变性,字典,效率的相关文章

斯坦福机器学习公开课学习笔记(1)—机器学习的动机与应用

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 斯坦福机器学习公开课差不多是网上能找到的最好的机器学习入门课程了.现在一共有20节课放到网络上,博主是在网易公开课学的,那里的视频有中文字幕然后课件也很全. (地址:http://v.163.com/special/opencourse/machinelearning.html) 主讲师Andrew Ng(已经被百度诏安了)是华裔科学家,看他的课特别有亲切感.感觉他们的课跟国内老师的课区别还是挺大的

美团网 KVM虚拟化公开课学习笔记

KVM优化技术,美团开放平台--邱剑 基于KVM现有选项做一些优化,视频地址:http://www.osforce.cn/course/77/learn#lesson/80 CPU调优: 1.Context switch(用户态到内核态的优化):ring0->nernel mode,ring 3->user mode; 设置:宿主机BIOS中开启intel VT-X 2.缓存优化  Cache-Node Binding 将qemu进程绑定到特定的CPU node或者core上---避免L2/L

斯坦福iOS7公开课10笔记及演示Demo

这一节主要介绍了多线程中的串行队列以及滚动视图UIScrollView. 一 .多线程 这一节只是简单介绍了多线程的串行队列,即把任务加入线程队列后按顺序逐步执行. (1)目前iOS多线程提供的方法主要是GCD和NSOperation,前者是C语言级别的,后者是经过封装,更具有面向对象特性的API. (2)UI交互操作都是在主线程进行,所以为了保证交互过程的流程舒适,类似于下载等耗时操作就需要主线程外执行,否则将出现用户无法对手机进行操作的场景. 这时通过多线程,就可以使下载图片等耗时操作单独进

python笔记之列表和元组

pyhton的列表和元组,说白了其实就是一种数据结构,只是在python当中更加方便的去操作而已.. 1.序列 其实字符串就是采取序列的方式的: string = "hello" print string[0] 结果为:h 对比其他编程语言,python还有一个负值索引的概念: 序列的分片: first = [0,1,2,3,4,5,6,7,9] print first[1:6:2] 针对first[1:6:2]这条语句: 1代表的起始索引,不写,默认为0 6代表结束索引,不写默认为所

斯坦福iOS7公开课4-6笔记及演示Demo

1.变量类型别滥用id,如果不仔细容易在程序执行时引发错误,因为在编译阶段编译器只是检测变量对象所属类型,尤其是类型为id时代表任何类型都可以通过检查,但不会检测变量对象调用的方法,这样当对象所属类不包含所写的调用方法时,编译通过,但在程序运行时才会报错. 2.简单介绍了框架自带的集合.字体等. 3.通过使用NSAttributedString可以让屏幕显示的字体样式更丰富,设置各种样式等,详细参见附件的演示Demo:http://files.cnblogs.com/colinhou/Attri

斯坦福iOS7公开课7-9笔记及演示Demo

这一部分主要介绍了iOS的绘图.手势.协议.block.力学特效动画(包括重力.碰撞.吸附等)以及自动布局的内容.    一.绘图.手势 (1)调用一个自定义的UIView时,可以使用awakeFromNib方法做一些初始化工作. (2)iOS中绘图需要了解的常用测量单位: CGFloat:浮点值,与float一样: CGPoint.CGSize.CGRect是三个结构体分别代表游XY坐标描述的店.宽度高度描述的大小值以及由原点坐标.宽度高度描述的矩形,度量单位都是CGFloat. (3)自定义

Python笔记_01列表 和元祖

Python笔记 第一章 列表和元祖 1.通用序列操作 所有序列都可以进行某些特定操作,包括:索引(indexing).分片(slicing).加(adding).乘(multiplying)以及检查某元素是否属于列表成员. 迭代:依次对序列中的每个元素重复执行某些操作. 序列的索引:通过元素在列表中的位置可以定位到该元素,这就是列表的索引,使用类似于list[0]对元素进行索引,索引0指向第一个元素.也可使用负数对元素进行索引,使用负数对元素索引时,列表中的最后一个元素由-1表示,例如list

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记1 IOS8概述

首先感谢网易公开课和SwiftV课堂的朋友们辛苦翻译,这个系列是我学习斯坦福IOS8公开课的个人心得体会和笔记,希望能给大家带来启发. 首先我们要知道IOS系统中的结构情况,从贴近硬件的底层到贴近用户的顶层,分为四个层次: 1.Core OS层在最下层,很多人可能不知道IOS是一个基于UNIX的操作系统,它大量借鉴了Mac os X 的内核部分,Mac OS X我们肯定不会陌生,命令行的使用很好的证明了它是一个基于UNIX的系统.IOS针对移动设备对电池等硬件进行了系统的优化,但它仍可被看成是一

[python 笔记2]列表、字符串、字典(list?string?map?)

1.列表 1)python 中的列表初始化 list=[0,1,2,3,4,5,6,7,8,9] 变量名=[,,,,],当然初始列表可以为空 ps:看到[],熟悉C++的同学不禁想到了熟悉的数组,那么python中的列表和数组之间有什么区别联系呢? 在python中我们依然可以使用下标来操作列表,就像操作数组一样.但是,如果python只给我提供如此简(keng)单(die)的操作那怎么能体现出python的简介强大呢? 2)分片 分片是指使用索引来指定访问列表的范围,来访问多个元素,而不是仅仅