python-組合數據類型


1.列表:由字符串創建一個作業評分列表,做增刪改查詢統計遍歷操作。例如,查詢第一個3分的下標,統計1分的同學有多少個,3分的同學有多少個等。

 1 >>> ls = list('132231321132')
 2 >>> ls
 3 ['1', '3', '2', '2', '3', '1', '3', '2', '1', '1', '3', '2']
 4 >>> ll=['123456']
 5 >>> ll
 6 ['123456']
 7 #
 8 >>> ls.append(9)
 9 >>> ls
10 ['1', '3', '2', '2', '3', '1', '3', '2', '1', '1', '3', '2', 9]
11 #
12 >>> ls.insert(0,'10')
13 >>> ls
14 ['10', '1', '3', '2', '2', '3', '1', '3', '2', '1', '1', '3', '2', 9]
15 #
16 >>> ls.pop(0)
17 '10'
18 >>> ls
19 ['1', '3', '2', '2', '3', '1', '3', '2', '1', '1', '3', '2', 9]
20 #
21 >>> ls.index('3')
22 1
23 #統計
24 >>> ls.count('1')
25 4
26 >>> ls.count('3')
27 4
28 >>> 
list

2.字典:建立學生學號成績字典,做增刪改查遍歷操作。

 1 #list()+zip()建立字典
 2 >>> dic=dict(zip([1,2,3],['98','100','88']))
 3 >>> dic
 4 {1: '98', 2: '100', 3: '88'}
 5 
 6 #增update()
 7 >>> dic2={4:'95'}
 8 >>> dic.update(dic2)
 9 >>> dic
10 {1: '98', 2: '100', 3: '88', 4: '95'}
11 
12 #刪pop()/del a[k]
13 >>> dic.pop(2)
14 '100'
15 >>> dic
16 {1: '98', 3: '88', 4: '95'}
17 #del
18 >>> dic
19 {1: '120', 3: '88', 4: '95'}
20 >>> del dic[3]
21 >>> dic
22 {1: '120', 4: '95'}
23 
24 #改insert()
25 >>> dic[1]='120'
26 >>> dic
27 {1: '120', 3: '88', 4: '95'}
28 
29 #查get()
30 >>> dic
31 {1: '98', 3: '88', 4: '95'}
32 >>> dic.get(4)
33 '95'
34 >>> dic.get(5,'沒有')
35 '沒有'
36 #直接查也可以
37 >>> dic[4]
38 '95'
39 
40 # 返回一個list:keys()/values()/items()
41 >>> dic.keys()
42 dict_keys([1, 3, 4])
43 >>> dic.values()
44 dict_values(['98', '88', '95'])
45 
46 #將dict中的元素變為元祖items()
47 >>> dic.items()
48 dict_items([(1, '98'), (3, '88'), (4, '95')])
dict

3.列表,元組,字典,集合的遍歷。

 1 #list
 2 ls=list('654561')
 3 #set
 4 st={'100','100','98','95','96','96'}
 5 #tuple
 6 tup='a','b',1,st
 7 #('a', 'b', 1, {'98', '96', '100', '95'})
 8 #dict
 9 dic={'a':'blue','b':'red','c':'white'}
10 
11 print('遍歷list'.center(50,'='))
12 for i in ls:
13     print(i,end=' ')
14 print('\n')
15 print('遍歷set'.center(50,'='))
16 for i in st:
17     print(i,end=' ')
18 print('\n')
19 print('遍歷tuple'.center(50,'='))
20 for i in tup:
21     print(i,end=' ')
22 print('\n')
23 print('遍歷dict'.center(50,'='))
24 for (k,v) in dic.items():
25     print('dict[%s]='%k,v)
組合數據類型遍歷

 

4.總結列表,元組,字典,集合的聯系與區別。

屬性 列表list 元祖tuple 字典dict             集合set
有序 是 (正向遞增/反向遞減)
數據可重復 key值唯一
數據可修改
特點

查詢速度隨內容增加而變慢

占用內存較小

表達固定數據項、函數多返回值、

多變量同步賦值、循環遍歷等情況下適用

改&查操作速度快,

不會因key值增加而變慢。

占用內存大,內存浪費多

(利用空間成本換時間)

數據獨立性:

能夠過濾重復參數

 

5.英文詞頻統計實例:待分析字符串,分解提取單詞,大小寫 txt.lower(),分隔符'.,:;?!-_’,計數字典,排序list.sort(),輸出TOP(10)

 

  1 #待分析字符串,分解提取單詞,大小寫 txt.lower(),分隔符'.,:;?!-_’,計數字典,排序list.sort(),輸出TOP(10)
  2 song='''
  3 Oh woah
  4 Oh woah
  5 Oh woahohhohh
  6  
  7 You know you love me, I know you care
  8 You shout whenever, and I'll be there
  9 You want my love, you want my heart
 10 And we will never ever ever be apart
 11 Are we an item? Girl quit playing
 12 We're just friends, what are you saying
 13 Said there's another and look right in my eyes
 14 My first love broke my heart for the first time
 15 And I was like
 16  
 17 Baby, baby, baby, oh like
 18 Baby, baby, baby, no like
 19 Baby, baby, baby, oh
 20 I thought you'd always been mine, mine
 21 Baby, baby, baby, oh like
 22 Baby, baby, baby, no like
 23 Baby, baby, baby, oh
 24 I thought you'd always been mine, mine
 25 Oh, Oh
 26  
 27 For you, I would have done whatever
 28 And I just can't believe we ain't together
 29 And I wanna play it cool, but I'm losing you
 30 I'll buy you anything, I'll buy you any ring
 31 And I'm in pieces, baby fix me
 32 And you'll shake me till you wake me from this bad dream
 33 I'm going down, down, down, down
 34 And I just can't believe my first love won't be around
 35 And I'm now like
 36  
 37 Baby, baby, baby, oh like
 38 Baby, baby, baby, no like
 39 Baby, baby, baby, oh
 40 I thought you'd always been mine, mine
 41 Baby, baby, baby, oh like
 42 Baby, baby, baby, no like
 43 Baby, baby, baby, oh
 44 I thought you'd always been mine, mine
 45  
 46 When I was 13 I had my first love
 47 There was nobody that compared to my baby
 48 And nobody came between us or could ever come above
 49 She had me going crazy
 50 Oh I was starstruck
 51 She woke me up daily don't need no starbucks
 52 She made my heart pound
 53 Asking for a beat when I see her in the street
 54 And at school on the playground
 55 But I really wanna see her on the weekend
 56 She knows she got me dazy
 57 Cause she was so amazing
 58 And now my heart is breaking
 59 But I'll just keep on saying
 60  
 61 Baby, baby, baby, oh like
 62 Baby, baby, baby, no like
 63 Baby, baby, baby, oh
 64 I thought you'd always been mine, mine
 65 Baby, baby, baby, oh like
 66 Baby, baby, baby, no like
 67 Baby, baby, baby, oh
 68 I thought you'd always been mine, mine
 69 Now I'm all gone
 70 Now I'm all gone
 71 Now I'm all gone
 72 Now I'm all gone
 73 I am gone
 74 
 75 '''
 76 #1.全文轉為小寫
 77 song=song.lower()
 78 
 79 #2.去除標點符號
 80 for i in ',.?!\n':
 81     song=song.replace(i,' ')
 82 
 83 #3.分解提取單詞
 84 words=song.split(' ')#將字符串以' '為依據划分為一個個單詞
 85 
 86 #expend={'in','and','so','i','ll','is','her','are','a','an'}
 87 #for i in expend:
 88 #    songs=words.replace(i,'*')
 89     
 90 #4.做一個空字典計數
 91 dic={}
 92 keys=set(words)#用數組的獨立性取出字典的key值
 93 for i in keys:
 94     dic[i]=words.count(i)#dic[i]輸出key值
 95 
 96 #5.排序
 97 tupleee=list(dic.items())
 98 tupleee.sort(key=lambda x:x[1],reverse=True)
 99 
100 #6.輸出TOP(10)
101 for i in range(10):
102     print(tupleee[i])
詞頻統計

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM