6.00 Introduction to Computer Science and Programming lec5: Objects in Python

Lec5 主要介绍了Python中的集合类:数组、列表和词典。

首先用下面的例子介绍数组:

Test = (1, 2, 3, 4, 5)
print Test[0]
print Test[1] 
x = 100 
divisors = ()
for i in range(1,x):
    if x%i == 0: 
    divisors = divisors+(i,)
print divisors 

Python中的数组是immutable的,也就是说是不可改的。这一点和Java、C++都不同,例如在上面的代码中若执行Test[0] = 0,则Python会报错。

在上面的代码中,divisors + (i,)也许有些难懂。在这里,+是连接符,两端的操作数都是数组。(i, )是包含一个元素 i 的数组,而(i)并不是一个数组。


继续用代码来介绍链表:

Techs = ['MIT', 'Cal Tech']
Ivys = ['Harward', 'Yale', 'Brown']
Univs = []
Univs.append(Techs)
print 'Univs =', Univs

Univs.append(Ivys)
print 'Univs =', Univs
for e in Univs:
    print 'e =', e

flat = Techs + Ivys
print 'flat =', flat

artSchools = ['RISD', 'Harward']
for u2 in artSchools:
    if u2 in flat:
        flat.remove(u2)

print 'flat =', flat

flat.sort()
print 'flat =', flat

flat[1] = 'UMass'
print 'flat =', flat
从上面可以看出,List是一个典型的类,有append, remove, sort等方法。而数组则更像Java中的int等primitive类型,只能被操作符操作。


下面通过代码介绍Dictionary:

EtoF = {'bread': 'du pain', 'wine': 'du vin',\
        'eats': 'mange', 'drinks': 'bois',\
        'likes': 'aime', 1: 'un',\
        '6.00':'6.00'}
print EtoF
print EtoF.keys()
print EtoF.keys
del EtoF[1]
print EtoF

D = {1: 'one', 'deux': 'two', 'pi':3.14159}
D1 = D
print D1
for k in D1.keys(): print k, '=', D1[k]

def translateWord(word, dictionary):
    if word in dictionary:
        return dictionary[word]
    else:
        return word

def translate(sentence):
    translation = ''
    word = ''
    for c in sentence:
        if c != ' ':
            word = word + c
        else:
            translation = translation + ' '\
                          + translateWord(word, EtoF)
            word = ''
    return translation[1:] + ' ' + translateWord(word, EtoF)

print translate('John eats bread')
print translate('Steve drinks wine')
print translate('John likes 6.00')

def keySearch(L, k):
    for elem in L:
        if elem[0] == k: return elem[1]
        return None

Clone方法:

学习过Java的同学应该对这个方法很熟悉,mutable的类需要使用Clone方法才能在内存中获得一个新的对象。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值