python_L6

1. tuples:

  (3) -> 3 but (3,) indicates a tuple -> (3,)  

2. tuples and lists:

  tuples:num = (1,2,3)  (3,)  不可修改  num(1) = 4  -> 'error'   can

  lists:num = [1,2,3]   [3]  可以修改   num[1] = 4 -> [1,4,3]   cannot be used as keys

  You can’t use lists as keys, since lists can be modified in place using index assignments, slice assignments, or methods like append() and extend().

.## universities


Techs = ['MIT', 'Cal Tech']
Ivys = ['Harvard', 'Yale', 'Brown']

Univs = [Techs, Ivys]
Univs1 = [['MIT', 'Cal Tech'], ['Harvard', 'Yale', 'Brown']]

Techs.append('RPI')

print('Univs = ')
print(Univs)
print('')
print('Univs1 =')
print(Univs1)


for e in Univs:
    print('Univs contains ')
    print(e)
    print('   which contains')
    for u in e:
        print('      ' + u)

 4.  list.append: side affect but '+' creates a new list

 5.  Avoid mutating a list over which one is iterating

def removeDups(L1, L2):
    for e1 in L1:
        if e1 in L2:
            L1.remove(e1)


L1 = [1,2,3,4]
L2 = [1,2,5,6]
removeDups(L1, L2)
print(L1)

"""
Inside for loop,	Python keeps track of where it is in list using internal	 counter	
When we	mutate a list, we change its length but Python doesn’t update counter
"""	
//Better is to clone
def removeDupsBetter(L1, L2):
    L1Start = L1[:]     //Do not use L1Start = L1, not efficient
    for e1 in L1Start:
        if e1 in L2:
            L1.remove(e1)

L1 = [1,2,3,4]
L2 = [1,2,5,6]
removeDupsBetter(L1, L2)
print(L1)

6. Difference

alist =  range(1,6)
blist = alist
print alist
print blist
alist[2] = 'hello'
print alist
print blist
//alist == blist for blist binds to alist

clist = range(1,6)
dlist = []
for num in alist:
    clist.append(num)
print clist
print dlist
clist[2] = 'hello'
print clist
print dlist
// clist != dlist

7. map(function, iterable, ...)

  Apply function to every item of iterable and return a list of the results. 

8. error

monthNumbers = {‘Jan’:1, ‘Feb’:2, ‘Mar’:3, 1:’Jan’, 2:’Feb’, 3:’Mar’}

monthNumbers[‘Jan’] returns 1 but monthNumbers[1]  can't returns ‘Jan’ 'error'

原文地址:https://www.cnblogs.com/njuzwr/p/4507478.html