1. 程式人生 > >python學習之四(集合的相關操作)

python學習之四(集合的相關操作)

集合:

集合是由不同元素組成的,集合裡的元素是無序的,集合中的元素必須是不可變的。

集合的簡單定義:

s = {1,2,3,4,5,6,6}
print(type(s))
print(s)

輸出結果:

type表明了這是一個集合型別,輸出元素集合把重複的元素自動去除。另外利用這種方法也能建立一個集合:

# s=set('hello')
# print(s)

或者:

# s=set(['alex','alex','sb'])
# print(s)
#集合的內建方法
# s={1,2,3,4,5,6}
# s.add(7)
# s.remove(1)  #刪除元素不存在會報錯
# s.discard(7) #刪除元組不存在不會報錯
# s.pop()
# s1=s.copy()
# print(s1,s)

集合的關係運算:

按照平時的迴圈來做第一列表與第二列表的關係運算也可以,但是特別麻煩,程式碼:

python_1=['張三','李四','王五']
linux_1=['劉六','李四','錢七']
python_and_linux_1=[]
for p_name in python_1:
    if p_name in linux_1:
        python_and_linux_1.append(p_name)
print(python_and_linux_1)

輸出結果:

如果用集合裡自帶的基本運算就會特別簡單,這裡要注意用的時候注意型別的轉換:

# #求交集
# print(p_s.intersection(l_s))
# print(p_s&l_s)
# #求並集
# print(p_s.union(l_s))
# print(p_s|l_s)
# #求差集
# print(p_s.difference(l_s))
# print(p_s-l_s)
# #交叉補集(合在一塊去掉共有的部分)
# print(p_s.symmetric_difference(l_s))
# print(p_s^l_s)
# #判斷子集
# s1={1,2}
# s2={1,2,3}
# print(s1.issubset(s2))
# #判斷父集
# print(s2.issuperset(s1))
# #更新多個值
# s1.update(s2)
# print(s1)

字串拼接格式化:

百分號用法  %s表示傳遞一個字串型別的資料,後面的%表示要傳遞的內容
print('i am %s my hobby is %s' %('lucky','swimming'))

輸出:

還可以使用傳遞變數的形式:

name='lucky'
age=18
print('i am %s my age is %d' %(name,age))
print('i am %(name1)s my age id %(age1)d' %{"name1":"lucky","age1":18})

輸出結果:

字串格式化,去掉{}裡的數字也可以使用,按照順序傳值

# s='i am {0},age{1},{2}'.format("lucky",18,"love")
# s1='i am {name},age{age},{other}'.format(name='lucky',age=18,other='lover')

進位制轉化:

s2='numbers:{:b},{:o},{:d},{:x},{:X},{:%}'.format(15,15,15,15,15,15.567345,4)
print(s2)

輸出結果:

下面加上一段python遞迴的問路程式:

person_list = ['dog','cat','fish','cow']
def ask_way(person_list):
    if len(person_list)==0:
        return '沒人知道怎麼走'
    person= person_list.pop(0)
    if person=='fish':
        return '%s說:我知道怎麼走' %person
    print('問:hi %s,你知道怎麼走嗎?' %person)
    print('%s回答:我不知道,我幫你問問%s' %(person,person_list))
    res = ask_way(person_list)
    print('%s問的結果是:%res' %(person,res))
    return res
res=ask_way(person_list)
print(res)

輸出結果:

通過這段程式能更好體會遞迴的呼叫過程以及執行結束條件。