1. 程式人生 > >22-25.遞歸 26-27.字典

22-25.遞歸 26-27.字典

自動 映射 blog 順序 set not in 函數調用 cnblogs 讀取

1.遞歸滿足的兩個條件:函數調用自身、設置了正確的返回條件;

2.適合使用遞歸的情況:目錄索引、樹結構、快速排序等;、

====斐波那契數列計算====

#遞歸法:

def fib(n):
    if n==0 or n==1:
        return 1
    else:
        return fib(n-1)+fib(n-2)
num = int(input("請輸入一個數:"))
print fib(num)

#叠代法:

def fib1(n):
    if n==0 or n==1:
        return 1
    else:
        a = 0
        b 
= 1 for i in range(n): i = a a = b b = i + a return b >>> num=int(input("請輸入一個數:")) 請輸入一個數:10 >>> print fib1(num) 55 >>> fib1(5) 5

3.字典

索引不好用時怎麽辦?

>>> dict1={}
>>> dict1.fromkeys((1,2,3))
{1: None, 2: None, 3: None}
>>> dict1.fromkeys((1,2,3),‘number‘)
{1: ‘number‘, 2: ‘number‘, 3: ‘number‘}

# 訪問字典的方法:keys(),value(),items()

keys:返回字典鍵的引用;values():返回字典值的引用;items():返回所有項

>>> dict2={}
>>> dict2=dict2.fromkeys(range(10),‘贊‘)
>>> for eachkey in dict2.keys():
print eachkey

#get方法:試圖訪問字典中不存在的項時打印出None

>>> print dict2.get(32)
None
>>> print dict2.get(32,‘木有‘)
木有
>>> 32 in dict2
False

#清空字典使用clear()方法

>>> dict2.clear()
>>> dict2
{}

#pop給定鍵彈出對應的值,popitem彈出指定的項

>>> a={1:‘one‘,2:‘two‘,3:‘three‘}
>>> a.pop(2)
‘two‘

>>> a.popitem()
(1, ‘one‘)

# update利用字典映射關系更新一個字典

>>> b={‘小白‘:‘狗‘}
>>> a={1:‘one‘,2:‘two‘,3:‘three‘}
>>> a.update(b)
>>> a
{1: ‘one‘, 2: ‘two‘, 3: ‘three‘, ‘\xd0\xa1\xb0\xd7‘: ‘\xb9\xb7‘}

=====集合=====

4.集合

用花括號括起一堆沒有映射關系的元素就為集合形式,集合中的數均為唯一性,會自動將重復的數清楚掉,集合沒有順序。

去掉重復元素:

方法一:利用for把其中數據一一讀取,利用in和not in判斷一個元素是否在集合中已經存在

>>> num1=[1,2,2,3,3,4,5]
>>> temp=[]
>>> for each in num1:
if each not in temp:
temp.append(each)

>>> temp
[1, 2, 3, 4, 5]

方法二:利用集合,但集合得到的結果是無序的
>>> num1 = list(set(num1))
>>> num1
[1, 2, 3, 4, 5]

#frozen凍結集合中的元素,不可改變

>>> num2=frozenset([1,2,3,4])

22-25.遞歸 26-27.字典