Python基本數據結構


  1 第一部分:  
  2   
  3   
  4 #列表a = [11,22,24,29,30,32]  
  5   
  6 #1 把28插入到列表的末端  
  7 >>> a.append(28)  
  8 >>> a  
  9 [11, 22, 24, 29, 30, 32, 28]  
 10   
 11 #2 在元素29后面插入元素57  
 12 >>> a.insert(4,57)  
 13 >>> a  
 14 [11, 22, 24, 29, 57, 30, 32, 28]  
 15   
 16 #3 把元素11修改成6  
 17 >>> a[0]=6  
 18 >>> a  
 19 [6, 22, 24, 29, 57, 30, 32, 28]  
 20   
 21 #3 刪除元素32  
 22 >>> a.pop(-2)  
 23 32  
 24 >>> a  
 25 [6, 22, 24, 29, 57, 30, 28]  
 26   
 27 #4 對列表從小到大排序  
 28 >>> a.sort()  
 29 >>> a  
 30 [6, 22, 24, 28, 29, 30, 57]  
 31   
 32 ##習題2:  
 33   
 34   
 35 #列表b = [1,2,3,4,5]  
 36   
 37   
 38 #1 用2種方法輸出下面的結果:  
 39   
 40 [1,2,3,4,5,6,7,8]  
 41 >>> b+[6,7,8]  
 42 [1, 2, 3, 4, 5, 6, 7, 8]  
 43   
 44 >>> b.extend([6,7,8])  
 45 >>> b  
 46 [1, 2, 3, 4, 5, 6, 7, 8]  
 47 #2 用列表的2種方法返回結果:[5,4]  
 48 >>> b[-4:-6:-1]  
 49 [5, 4]  
 50   
 51 >>> d=[]  
 52 >>> d.append(b[-4])  
 53 >>> d.append(b[-5])  
 54 >>> d  
 55 [5, 4]  
 56   
 57 #3 判斷2是否在列表里  
 58 >>> 2 in b  
 59 True  
 60   
 61 ##習題3:  
 62   
 63 #b = [23,45,22,44,25,66,78]  
 64   
 65 #用列表解析完成下面習題:  
 66   
 67   
 68 #1 生成所有奇數組成的列表  
 69   
 70 >>> b=[23,45,22,44,25,66,78]  
 71 >>> b  
 72 [23, 45, 22, 44, 25, 66, 78]  
 73 >>> [i for i in b if i % 2==1]  
 74 [23, 45, 25]  
 75   
 76 #2 輸出結果: ['the content 23','the content 45']  
 77   
 78 >>> ["the content %s" % m for m in b[0:2:1]]  
 79 ['the content 23', 'the content 45']  
 80   
 81 #3 輸出結果: [25, 47, 24, 46, 27, 68, 80]  
 82 >>> [m+2 for m in b]  
 83 [25, 47, 24, 46, 27, 68, 80]  
 84   
 85 ##習題4:  
 86   
 87   
 88 #用range方法和列表推導的方法生成列表:  
 89   
 90 #[11,22,33]  
 91   
 92 >>> range(11,34,11) #range(起始,結束+1,步長)  
 93 [11, 22, 33]  
 94 >>> [m *11 for m in range(1,4,1)]  
 95 [11, 22, 33]  
 96 ##習題5:  
 97   
 98   
 99 #已知元組:a = (1,4,5,6,7)  
100   
101   
102 #1 判斷元素4是否在元組里  
103 >>> 4 in a  
104 True  
105   
106 #2 把元素5修改成8  
107 >>> a(2)=8  
108 SyntaxError: can't assign to function call  
109 >>> c=list(a)  
110 >>> c  
111 [1, 4, 5, 6, 7]  
112 >>> c[2]=8  
113 >>> c  
114 [1, 4, 8, 6, 7]  
115 >>> a=tuple(c)  
116 >>> a  
117 (1, 4, 8, 6, 7)  
118 ##習題6:  
119   
120   
121 #已知集合:setinfo = set('acbdfem')和集合finfo = set('sabcdef')完成下面操作:  
122   
123   
124 #1 添加字符串對象'abc'到集合setinfo  
125 >>> setinfo=set('abcdfem')  
126 >>> setinfo  
127 set(['a', 'c', 'b', 'e', 'd', 'f', 'm'])  
128 >>> setinfo.add('abc')  
129 >>> setinfo  
130 set(['a', 'c', 'b', 'e', 'd', 'f', 'm', 'abc'])  
131   
132 #2 刪除集合setinfo里面的成員m  
133 >>> setinfo.remove('m')  
134 >>> setinfo  
135 set(['a', 'c', 'b', 'e', 'd', 'f', 'abc'])  
136   
137 #3 求2個集合的交集和並集  
138 >>> finfo=set('sabcdef')  
139 >>> finfo  
140 set(['a', 'c', 'b', 'e', 'd', 'f', 's'])  
141 >>> setinfo & finfo  
142 set(['a', 'c', 'b', 'e', 'd', 'f'])  
143 >>> setinfo | finfo  
144 set(['a', 'c', 'b', 'e', 'd', 'f', 's', 'abc'])  
145   
146 ##習題7:  
147   
148   
149 #用字典的方式完成下面一個小型的學生管理系統。  
150   
151   
152 #1 學生有下面幾個屬性:姓名,年齡,考試分數包括:語文,數學,英語得分。  
153   
154 """ 
155 比如定義2個同學: 
156  
157  
158 姓名:李明,年齡25,考試分數:語文80,數學75,英語85 
159  
160  
161 姓名:張強,年齡23,考試分數:語文75,數學82,英語78 
162 """  
163 >>> studentinfo={'liming':{'name':'LiMing','age':25,'score':{'chinese':80,'math':75,'english':85}}}  
164 >>> studentinfo  
165 {'liming': {'age': 25, 'score': {'math': 75, 'chinese': 80, 'english': 85}, 'name': 'LiMing'}}  
166 >>> studentinfo['zhangqiang']={'age':25,'name':'ZhangQiang','score':{'chinese':75,'math':82,'english':78}}  
167 >>> studentinfo  
168 {'liming': {'age': 25, 'score': {'math': 75, 'chinese': 80, 'english': 85}, 'name': 'LiMing'}, 'zhangqiang': {'age': 25, 'score': {'math': 82, 'chinese': 75, 'english': 78}, 'name': 'ZhangQiang'}}  
169   
170 #2 給學生添加一門python課程成績,李明60分,張強:80分  
171 >>> studentinfo['liming']['score']['python']=60  
172 >>> studentinfo['liming']  
173 {'age': 25, 'score': {'python': 60, 'math': 75, 'chinese': 80, 'english': 85}, 'name': 'LiMing'}  
174 >>> studentinfo['zhangqiang']['score']['python']=80  
175 >>> studentinfo['zhangqiang']  
176 {'age': 25, 'score': {'python': 80, 'math': 82, 'chinese': 75, 'english': 78}, 'name': 'ZhangQiang'}  
177   
178   
179 #3 把張強的數學成績由82分改成89分  
180 >>> studentinfo['zhangqiang']['score']['math']=89  
181 >>> studentinfo['zhangqiang']  
182 {'age': 25, 'score': {'python': 80, 'math': 89, 'chinese': 75, 'english': 78}, 'name': 'ZhangQiang'}  
183   
184   
185 #4 刪除李明的年齡數據  
186 >>> del studentinfo['liming']['age']  
187 >>> studentinfo  
188 {'liming': {'score': {'python': 60, 'math': 75, 'chinese': 80, 'english': 85}, 'name': 'LiMing'}, 'zhangqiang': {'age': 25, 'score': {'python': 80, 'math': 89, 'chinese': 75, 'english': 78}, 'name': 'ZhangQiang'}}  
189   
190   
191 #5 對張強同學的課程分數按照從低到高排序輸出。  
192 >>> b=studentinfo['zhangqiang']['score'].values()  
193 >>> b  
194 [80, 89, 75, 78]  
195 >>> b.sort()  
196 >>> b  
197 [75, 78, 80, 89]  
198   
199 #6 外部刪除學生所在的城市屬性,不存在返回字符串 beijing  
200 >>> studentinfo.pop('city','beijing')   #若存在鍵名'city'  返回其屬性  否則返回'beijing'  
201 'beijing'  

 

  1 第二部分:  
  2   
  3 一.已經字符串 s = "i,am,lilei",請用兩種辦法取出之間的“am”字符。  
  4 >>> s="i,am,lilei"  
  5 >>> s[2:4]              #字符串切片  
  6 'am'  
  7 >>> s.split(',')[1]   
  8 'am'  
  9 更多關於split函數:http://blog.csdn.net/holyang_1013197377/article/details/49205065  
 10   
 11 二.在python中,如何修改字符串?  
 12 >>> s="i love php"  
 13 >>> s.replace('php','python')  
 14 'i love python'  
 15   
 16 三.bool("2012" == 2012) 的結果是什么。  
 17 >>> bool("2012"==2012)  
 18 False  
 19   
 20   
 21 四.已知如下變量  
 22 ________  
 23 a = "字符串拼接1"  
 24 b = "字符串拼接2"  
 25 ________  
 26   
 27 1.請用四種以上的方式將a與b拼接成字符串c。並指出每一種方法的優劣。  
 28 a="string1"  
 29 b="string2"  
 30 c1=a+b  #1不適合大量字符串拼接  
 31   
 32 c2="%s%s" % (a,b) #2受順序限制  
 33   
 34 print 'format'  
 35 c3="{a}{b}" . format(a=a,b=b) #3 未受順序限制  
 36   
 37 c4="".join([a,b])  #4 只要申請一次內存  
 38 print c4  
 39   
 40 2.請計算出新拼接出來的字符串長度,並取出其中的第七個字符。  
 41 lennum=len(c1.encode('utf-8'))  
 42 print c1.encode('utf-8')[6].encode('utf-8')  
 43   
 44 五.請閱讀string模塊,並且,根據string模塊的內置方法輸出如下幾題的答案。  
 45   
 46 1.包含0-9的數字。  
 47 >>> print string.digits  
 48 0123456789  
 49   
 50 2.所有小寫字母。  
 51 >>> print string.lowercase  
 52 abcdefghijklmnopqrstuvwxyz  
 53   
 54 3.所有標點符號。  
 55 >>> print string.punctuation  
 56 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~  
 57   
 58 4.所有大寫字母和小寫字母。  
 59 >>> print string.ascii_uppercase  
 60 ABCDEFGHIJKLMNOPQRSTUVWXYZ  
 61 >>> print string.lowercase  
 62 abcdefghijklmnopqrstuvwxyz  
 63   
 64 5.請使用你認為最好的辦法將{1}-{4}點中的字符串拼接成一個字符串。  
 65 >>> string.digits+string.lowercase+string.uppercase+string.punctuation  
 66 '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'  
 67   
 68 strinfo = []  
 69 strinfo.append(string.digits)  
 70 strinfo.append(string.lowercase)  
 71 strinfo.append(string.punctuation)  
 72 strinfo.append(string.ascii_lowercase)  
 73 strinfo.append(string.ascii_uppercase)  
 74 print "".join(strinfo)  
 75 print '\n'  
 76   
 77 strinfo = "%s%s%s%s%s" % (string.digits,string.lowercase,string.punctuation,string.ascii_lowercase,string.ascii_uppercase)  
 78 print strinfo  
 79   
 80 九.已知字符串  
 81 ________  
 82   
 83 a = "i,am,a,boy,in,china"  
 84 ________  
 85   
 86 1.假設boy和china是隨時可能變換的,例boy可能改成girl或者gay,而china可能會改成別的國家,你會如何將上面的字符串,變為可配置的。  
 87 >>> exp1="i,am,a,%(sex)s,in,%(country)s" % {'sex':'boy','country':'China'}  
 88 >>> print exp1  
 89 i,am,a,boy,in,China  
 90 >>> exp2="i,am,a,{sex},in,{country}".format (sex='girl',country='USA')  
 91 >>> print exp2  
 92 i,am,a,girl,in,USA  
 93   
 94 2.請使用2種辦法取出其間的字符"boy""china" 95 >>> print exp1[7:10]  
 96 boy  
 97 >>> print exp1.split(',')[3]  
 98 boy  
 99 >>> print exp1[-5:]  
100 China  
101 >>> print exp1.split(',')[-1]  
102 China  
103   
104 3.請找出第一個"i"出現的位置。  
105 >>> exp1.index('i')  
106 0  
107 >>> exp1.find('i')  
108 0  
109   
110 4.請找出"china"中的"i"字符在字符串a中的位置。  
111 >>> print exp1.find('i',exp1.find('China'))  
112 16  
113 >>> print exp1.rfind('i')       #找第二個'i'字符  
114 16  
115   
116 5.請計算該字符串一共有幾個逗號。  
117 >>> print exp1.count(',')  
118 5  
119   
120 十.請將模塊string的幫助文檔保存為一個文件。  
121 import sys  
122 import string  
123   
124 f=open('string_help.log','w')  
125 sys.stdout=f  
126 help(string)  
127 f.close()  
 1 1. 已知字符串 a = "aAsmr3idd4bgs7Dlsf9eAF",要求如下  
 2 1.1 請將a字符串的大寫改為小寫,小寫改為大寫。  
 3 print a.upper()  
 4 print a.lower()  
 5   
 6 1.2 請將a字符串的數字取出,並輸出成一個新的字符串。  
 7 print ''.join([s for s in a if s.isdigit()])  
 8 #解釋  
 9 [s      for s in a if s.isdigit()]  
10 l=[]  
11 for s in a:  
12     if s.isdigit():  
13         l.append(s)  
14 print l  
15   
16 1.3 請統計a字符串出現的每個字母的出現次數(忽略大小寫,a與A是同一個字母),並輸出成一個字典。 print a.count('a')  
17 print dict([(x,a.count(x)) for x in set(a)])#set去重  
18   
19 1.4 請去除a字符串多次出現的字母,僅留最先出現的一個。例 'abcabb',經過去除后,輸出 'abc'  
20 a_list=list(a)  
21 #print set(a_list)   #set 去重  無序  字典和集合不可排序  
22 set_list=list(set(a_list)) #去重以后轉化為list  
23 set_list.sort(key=a_list.index)#對去重后按照list原來排序  
24 print ''.join(set_list)    #拼接成字符串  
25   
26 1.5 請將a字符串反轉並輸出。例:'abc'的反轉是'cba'  
27 print a[::-1]  
28   
29 1.6 去除a字符串內的數字后,請將該字符串里的單詞重新排序(a-z),並且重新輸出一個排序后的字符 串。(保留大小寫,a與A的順序關系為:A在a前面。例:AaBb)  
30   
31 1.要有小寫字母a-z的排序  
32 2.大小寫相同的大寫在前面  
33   
34 l=sorted(a)  
35 #print l  sort排序結果:字母數字分開排序  
36 a_upper_list=[]     #聲明大寫list  
37 a_lower_list=[]     #聲明小寫list  
38 for x in l:         #遍歷排序過的list 將大小寫分別存在兩個list中  
39     if x.isupper():  
40         a_upper_list.append(x)  
41     elif x.islower():  
42         a_lower_list.append(x)  
43     else:  
44         pass  
45   
46 for y in a_upper_list: #遍歷大寫list   
47     y_lower=y.lower()  
48     if y_lower in a_lower_list:  
49         a_lower_list.insert(a_lower_list.index(y_lower),y) #把大寫list中的字母插入到 原來這個位置是該字母小寫的位置 不覆蓋  順延 index定位  
50 #print a_lower_list  
51 print ''.join(a_lower_list)  #拼接成字符串輸出  
52   
53   
54 1.7 請判斷 'boy'里出現的每一個字母,是否都出現在a字符串里。如果出現,則輸出True,否則,則輸 出False.  
55 search='boy'  
56 b=set(a)  
57 b.update(search) #update特性  如果b中有的字符  search中的字符就插不進去  
58 print len(set(a))==len(a)  
59   
60 1.8 要求如1.7,此時的單詞判斷,由'boy'改為四個,分別是 'boy','girl','bird','dirty',請判斷如上這4個字符串里的每個字母,是否都出現在a字符串里。  
61 search=['boy','girl','bird','dirty']  
62 b=set(a)  
63 print b  
64 for i in search:  
65     b.update(i)  
66 print len(set(a))==len(a)  
67   
68 1.9 輸出a字符串出現頻率最高的字母  
69 #set 去重  
70 l=([(x,a.count(x))for x in set(a)])  
71 l.sort(key=lambda k:k[1],reverse=True) #兩次排序 :指定排序 第一個鍵  reverse從大向小排序  
72 print l[0]  
73 print l  
74   
75 2.一文件的字節數為 102324123499123,請計算該文件按照kb與mb計算得到的大小。  
76 size=102324123499123  
77 print '%s kb' % (size>>10)  
78 print '%s mb' % (size>>20)  
79   
80 3.已知  a =  [1,2,3,6,8,9,10,14,17],請將該list轉換為字符串,例如 '123689101417'.  
81 a =  [1,2,3,6,8,9,10,14,17]  
82 print str(a)[1:-1].replace(', ','')

轉載:http://blog.csdn.net/holyang_1013197377/article/details/49185605


免責聲明!

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



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