python基础2之字符串、列表、字典、集合详解编程语言

内容概要:

一、python2 or 3

二、字符串拼接

三、字符串

四、列表、元祖

五、字典

六、集合

七、练习

 

一、python2 or python3

目前大多使用python2.7,随着时间的推移,python3将会成为python爱好者的主流。

python2和3区别:

1.PRINT IS A FUNCTION

1 Old: print "The answer is", 2*2 New: print("The answer is", 2*2) 
2 Old: print x, # Trailing comma suppresses newline New: print(x, end=" ") # Appends a space instead of a newline 
3 Old: print # Prints a newline 
4 New: print() # You must call the function! 
5 Old: print >>sys.stderr, "fatal error" New: print("fatal error", file=sys.stderr) 
6 Old: print (x, y) # prints repr((x, y)) 
7 New: print((x, y)) # Not the same as print(x, y)!

2.某些库名改变

例如:

2.x 3.x
_winreg winreg
copy_reg copyreg
Queue queue
SockerServer sockerserver
repr reprlib

3.ALL IS UNICODE NOW

所有的字符编码变为unicode

 

二、字符串拼接

方法一:使用“+”(不推荐)

原因:python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间
name="wd" 
msg="my name is "+name 
print(msg) 
输出: 
my name is wd

方法二:使用格式化字符串

%s:字符串

%d:整数

%f:浮点数

1 name="wd" 
2 age=22 
3 job="IT" 
4 msg="my name is %s age %d job %s"%(name,age,job) 
5 print(msg) 
6 输出: 
7 my name is wd age 22 job IT

方法三:使用format进行格式化输出(变量名替换)

 1 name="wd" 
 2 age=22 
 3 job="IT" 
 4 msg='''my name is:{_name} 
 5         age is: {_age} 
 6         job is: {_job}'''.format(_name=name,_age=age,_job=job) 
 7 print(msg) 
 8 输出: 
 9 my name is:wd 
10         age is: 22 
11         job is: IT

或者:(位置替换)

 1 name="wd" 
 2 age=22 
 3 job="IT" 
 4 msg='''my name is:{0} 
 5         age is: {1} 
 6         job is: {2}'''.format(name,age,job) 
 7 print(msg) 
 8 输出: 
 9 my name is:wd 
10         age is: 22 
11         job is: IT

总结:对比以上三种方法,使用+方式进行拼接字符串会开辟较多的内存空间,效率低,推荐使用第二种和第三种方法。

 

三、字符串

1.字符串常用操作

  • 移除空白(strip)
  • 分割(split)
  • 长度(len)
  • 索引(index)
  • 切片

字符串对方法如下:

python基础2之字符串、列表、字典、集合详解编程语言

  1 class str(basestring): 
  2     """ 
  3     str(object='') -> string 
  4      
  5     Return a nice string representation of the object. 
  6     If the argument is a string, the return value is the same object. 
  7     """ 
  8     def capitalize(self):   
  9         """ 首字母变大写 """ 
 10         """ 
 11         S.capitalize() -> string 
 12          
 13         Return a copy of the string S with only its first character 
 14         capitalized. 
 15         """ 
 16         return "" 
 17  
 18     def center(self, width, fillchar=None):   
 19         """ 内容居中,width:总长度;fillchar:空白处填充内容,默认无 """ 
 20         """ 
 21         S.center(width[, fillchar]) -> string 
 22          
 23         Return S centered in a string of length width. Padding is 
 24         done using the specified fill character (default is a space) 
 25         """ 
 26         return "" 
 27  
 28     def count(self, sub, start=None, end=None):   
 29         """ 子序列个数 """ 
 30         """ 
 31         S.count(sub[, start[, end]]) -> int 
 32          
 33         Return the number of non-overlapping occurrences of substring sub in 
 34         string S[start:end].  Optional arguments start and end are interpreted 
 35         as in slice notation. 
 36         """ 
 37         return 0 
 38  
 39     def decode(self, encoding=None, errors=None):   
 40         """ 解码 """ 
 41         """ 
 42         S.decode([encoding[,errors]]) -> object 
 43          
 44         Decodes S using the codec registered for encoding. encoding defaults 
 45         to the default encoding. errors may be given to set a different error 
 46         handling scheme. Default is 'strict' meaning that encoding errors raise 
 47         a UnicodeDecodeError. Other possible values are 'ignore' and 'replace' 
 48         as well as any other name registered with codecs.register_error that is 
 49         able to handle UnicodeDecodeErrors. 
 50         """ 
 51         return object() 
 52  
 53     def encode(self, encoding=None, errors=None):   
 54         """ 编码,针对unicode """ 
 55         """ 
 56         S.encode([encoding[,errors]]) -> object 
 57          
 58         Encodes S using the codec registered for encoding. encoding defaults 
 59         to the default encoding. errors may be given to set a different error 
 60         handling scheme. Default is 'strict' meaning that encoding errors raise 
 61         a UnicodeEncodeError. Other possible values are 'ignore', 'replace' and 
 62         'xmlcharrefreplace' as well as any other name registered with 
 63         codecs.register_error that is able to handle UnicodeEncodeErrors. 
 64         """ 
 65         return object() 
 66  
 67     def endswith(self, suffix, start=None, end=None):   
 68         """ 是否以 xxx 结束 """ 
 69         """ 
 70         S.endswith(suffix[, start[, end]]) -> bool 
 71          
 72         Return True if S ends with the specified suffix, False otherwise. 
 73         With optional start, test S beginning at that position. 
 74         With optional end, stop comparing S at that position. 
 75         suffix can also be a tuple of strings to try. 
 76         """ 
 77         return False 
 78  
 79     def expandtabs(self, tabsize=None):   
 80         """ 将tab转换成空格,默认一个tab转换成8个空格 """ 
 81         """ 
 82         S.expandtabs([tabsize]) -> string 
 83          
 84         Return a copy of S where all tab characters are expanded using spaces. 
 85         If tabsize is not given, a tab size of 8 characters is assumed. 
 86         """ 
 87         return "" 
 88  
 89     def find(self, sub, start=None, end=None):   
 90         """ 寻找子序列位置,如果没找到,返回 -1 """ 
 91         """ 
 92         S.find(sub [,start [,end]]) -> int 
 93          
 94         Return the lowest index in S where substring sub is found, 
 95         such that sub is contained within S[start:end].  Optional 
 96         arguments start and end are interpreted as in slice notation. 
 97          
 98         Return -1 on failure. 
 99         """ 
100         return 0 
101  
102     def format(*args, **kwargs): # known special case of str.format 
103         """ 字符串格式化,动态参数,将函数式编程时细说 """ 
104         """ 
105         S.format(*args, **kwargs) -> string 
106          
107         Return a formatted version of S, using substitutions from args and kwargs. 
108         The substitutions are identified by braces ('{' and '}'). 
109         """ 
110         pass 
111  
112     def index(self, sub, start=None, end=None):   
113         """ 子序列位置,如果没找到,报错 """ 
114         S.index(sub [,start [,end]]) -> int 
115          
116         Like S.find() but raise ValueError when the substring is not found. 
117         """ 
118         return 0 
119  
120     def isalnum(self):   
121         """ 是否是字母和数字 """ 
122         """ 
123         S.isalnum() -> bool 
124          
125         Return True if all characters in S are alphanumeric 
126         and there is at least one character in S, False otherwise. 
127         """ 
128         return False 
129  
130     def isalpha(self):   
131         """ 是否是字母 """ 
132         """ 
133         S.isalpha() -> bool 
134          
135         Return True if all characters in S are alphabetic 
136         and there is at least one character in S, False otherwise. 
137         """ 
138         return False 
139  
140     def isdigit(self):   
141         """ 是否是数字 """ 
142         """ 
143         S.isdigit() -> bool 
144          
145         Return True if all characters in S are digits 
146         and there is at least one character in S, False otherwise. 
147         """ 
148         return False 
149  
150     def islower(self):   
151         """ 是否小写 """ 
152         """ 
153         S.islower() -> bool 
154          
155         Return True if all cased characters in S are lowercase and there is 
156         at least one cased character in S, False otherwise. 
157         """ 
158         return False 
159  
160     def isspace(self):   
161         """ 
162         S.isspace() -> bool 
163          
164         Return True if all characters in S are whitespace 
165         and there is at least one character in S, False otherwise. 
166         """ 
167         return False 
168  
169     def istitle(self):   
170         """ 
171         S.istitle() -> bool 
172          
173         Return True if S is a titlecased string and there is at least one 
174         character in S, i.e. uppercase characters may only follow uncased 
175         characters and lowercase characters only cased ones. Return False 
176         otherwise. 
177         """ 
178         return False 
179  
180     def isupper(self):   
181         """ 
182         S.isupper() -> bool 
183          
184         Return True if all cased characters in S are uppercase and there is 
185         at least one cased character in S, False otherwise. 
186         """ 
187         return False 
188  
189     def join(self, iterable):   
190         """ 连接 """ 
191         """ 
192         S.join(iterable) -> string 
193          
194         Return a string which is the concatenation of the strings in the 
195         iterable.  The separator between elements is S. 
196         """ 
197         return "" 
198  
199     def ljust(self, width, fillchar=None):   
200         """ 内容左对齐,右侧填充 """ 
201         """ 
202         S.ljust(width[, fillchar]) -> string 
203          
204         Return S left-justified in a string of length width. Padding is 
205         done using the specified fill character (default is a space). 
206         """ 
207         return "" 
208  
209     def lower(self):   
210         """ 变小写 """ 
211         """ 
212         S.lower() -> string 
213          
214         Return a copy of the string S converted to lowercase. 
215         """ 
216         return "" 
217  
218     def lstrip(self, chars=None):   
219         """ 移除左侧空白 """ 
220         """ 
221         S.lstrip([chars]) -> string or unicode 
222          
223         Return a copy of the string S with leading whitespace removed. 
224         If chars is given and not None, remove characters in chars instead. 
225         If chars is unicode, S will be converted to unicode before stripping 
226         """ 
227         return "" 
228  
229     def partition(self, sep):   
230         """ 分割,前,中,后三部分 """ 
231         """ 
232         S.partition(sep) -> (head, sep, tail) 
233          
234         Search for the separator sep in S, and return the part before it, 
235         the separator itself, and the part after it.  If the separator is not 
236         found, return S and two empty strings. 
237         """ 
238         pass 
239  
240     def replace(self, old, new, count=None):   
241         """ 替换 """ 
242         """ 
243         S.replace(old, new[, count]) -> string 
244          
245         Return a copy of string S with all occurrences of substring 
246         old replaced by new.  If the optional argument count is 
247         given, only the first count occurrences are replaced. 
248         """ 
249         return "" 
250  
251     def rfind(self, sub, start=None, end=None):   
252         """ 
253         S.rfind(sub [,start [,end]]) -> int 
254          
255         Return the highest index in S where substring sub is found, 
256         such that sub is contained within S[start:end].  Optional 
257         arguments start and end are interpreted as in slice notation. 
258          
259         Return -1 on failure. 
260         """ 
261         return 0 
262  
263     def rindex(self, sub, start=None, end=None):   
264         """ 
265         S.rindex(sub [,start [,end]]) -> int 
266          
267         Like S.rfind() but raise ValueError when the substring is not found. 
268         """ 
269         return 0 
270  
271     def rjust(self, width, fillchar=None):   
272         """ 
273         S.rjust(width[, fillchar]) -> string 
274          
275         Return S right-justified in a string of length width. Padding is 
276         done using the specified fill character (default is a space) 
277         """ 
278         return "" 
279  
280     def rpartition(self, sep):   
281         """ 
282         S.rpartition(sep) -> (head, sep, tail) 
283          
284         Search for the separator sep in S, starting at the end of S, and return 
285         the part before it, the separator itself, and the part after it.  If the 
286         separator is not found, return two empty strings and S. 
287         """ 
288         pass 
289  
290     def rsplit(self, sep=None, maxsplit=None):   
291         """ 
292         S.rsplit([sep [,maxsplit]]) -> list of strings 
293          
294         Return a list of the words in the string S, using sep as the 
295         delimiter string, starting at the end of the string and working 
296         to the front.  If maxsplit is given, at most maxsplit splits are 
297         done. If sep is not specified or is None, any whitespace string 
298         is a separator. 
299         """ 
300         return [] 
301  
302     def rstrip(self, chars=None):   
303         """ 
304         S.rstrip([chars]) -> string or unicode 
305          
306         Return a copy of the string S with trailing whitespace removed. 
307         If chars is given and not None, remove characters in chars instead. 
308         If chars is unicode, S will be converted to unicode before stripping 
309         """ 
310         return "" 
311  
312     def split(self, sep=None, maxsplit=None):   
313         """ 分割, maxsplit最多分割几次 """ 
314         """ 
315         S.split([sep [,maxsplit]]) -> list of strings 
316          
317         Return a list of the words in the string S, using sep as the 
318         delimiter string.  If maxsplit is given, at most maxsplit 
319         splits are done. If sep is not specified or is None, any 
320         whitespace string is a separator and empty strings are removed 
321         from the result. 
322         """ 
323         return [] 
324  
325     def splitlines(self, keepends=False):   
326         """ 根据换行分割 """ 
327         """ 
328         S.splitlines(keepends=False) -> list of strings 
329          
330         Return a list of the lines in S, breaking at line boundaries. 
331         Line breaks are not included in the resulting list unless keepends 
332         is given and true. 
333         """ 
334         return [] 
335  
336     def startswith(self, prefix, start=None, end=None):   
337         """ 是否起始 """ 
338         """ 
339         S.startswith(prefix[, start[, end]]) -> bool 
340          
341         Return True if S starts with the specified prefix, False otherwise. 
342         With optional start, test S beginning at that position. 
343         With optional end, stop comparing S at that position. 
344         prefix can also be a tuple of strings to try. 
345         """ 
346         return False 
347  
348     def strip(self, chars=None):   
349         """ 移除两段空白 """ 
350         """ 
351         S.strip([chars]) -> string or unicode 
352          
353         Return a copy of the string S with leading and trailing 
354         whitespace removed. 
355         If chars is given and not None, remove characters in chars instead. 
356         If chars is unicode, S will be converted to unicode before stripping 
357         """ 
358         return "" 
359  
360     def swapcase(self):   
361         """ 大写变小写,小写变大写 """ 
362         """ 
363         S.swapcase() -> string 
364          
365         Return a copy of the string S with uppercase characters 
366         converted to lowercase and vice versa. 
367         """ 
368         return "" 
369  
370     def title(self):   
371         """ 
372         S.title() -> string 
373          
374         Return a titlecased version of S, i.e. words start with uppercase 
375         characters, all remaining cased characters have lowercase. 
376         """ 
377         return "" 
378  
379     def translate(self, table, deletechars=None):   
380         """ 
381         转换,需要先做一个对应表,最后一个表示删除字符集合 
382         intab = "aeiou" 
383         outtab = "12345" 
384         trantab = maketrans(intab, outtab) 
385         str = "this is string example....wow!!!" 
386         print str.translate(trantab, 'xm') 
387         """ 
388  
389         """ 
390         S.translate(table [,deletechars]) -> string 
391          
392         Return a copy of the string S, where all characters occurring 
393         in the optional argument deletechars are removed, and the 
394         remaining characters have been mapped through the given 
395         translation table, which must be a string of length 256 or None. 
396         If the table argument is None, no translation is applied and 
397         the operation simply removes the characters in deletechars. 
398         """ 
399         return "" 
400  
401     def upper(self):   
402         """ 
403         S.upper() -> string 
404          
405         Return a copy of the string S converted to uppercase. 
406         """ 
407         return "" 
408  
409     def zfill(self, width):   
410         """方法返回指定长度的字符串,原字符串右对齐,前面填充0。""" 
411         """ 
412         S.zfill(width) -> string 
413          
414         Pad a numeric string S with zeros on the left, to fill a field 
415         of the specified width.  The string S is never truncated. 
416         """ 
417         return "" 
418  
419     def _formatter_field_name_split(self, *args, **kwargs): # real signature unknown 
420         pass 
421  
422     def _formatter_parser(self, *args, **kwargs): # real signature unknown 
423         pass 
424  
425     def __add__(self, y):   
426         """ x.__add__(y) <==> x+y """ 
427         pass 
428  
429     def __contains__(self, y):   
430         """ x.__contains__(y) <==> y in x """ 
431         pass 
432  
433     def __eq__(self, y):   
434         """ x.__eq__(y) <==> x==y """ 
435         pass 
436  
437     def __format__(self, format_spec):   
438         """ 
439         S.__format__(format_spec) -> string 
440          
441         Return a formatted version of S as described by format_spec. 
442         """ 
443         return "" 
444  
445     def __getattribute__(self, name):   
446         """ x.__getattribute__('name') <==> x.name """ 
447         pass 
448  
449     def __getitem__(self, y):   
450         """ x.__getitem__(y) <==> x[y] """ 
451         pass 
452  
453     def __getnewargs__(self, *args, **kwargs): # real signature unknown 
454         pass 
455  
456     def __getslice__(self, i, j):   
457         """ 
458         x.__getslice__(i, j) <==> x[i:j] 
459                     
460                    Use of negative indices is not supported. 
461         """ 
462         pass 
463  
464     def __ge__(self, y):   
465         """ x.__ge__(y) <==> x>=y """ 
466         pass 
467  
468     def __gt__(self, y):   
469         """ x.__gt__(y) <==> x>y """ 
470         pass 
471  
472     def __hash__(self):   
473         """ x.__hash__() <==> hash(x) """ 
474         pass 
475  
476     def __init__(self, string=''): # known special case of str.__init__ 
477         """ 
478         str(object='') -> string 
479          
480         Return a nice string representation of the object. 
481         If the argument is a string, the return value is the same object. 
482         # (copied from class doc) 
483         """ 
484         pass 
485  
486     def __len__(self):   
487         """ x.__len__() <==> len(x) """ 
488         pass 
489  
490     def __le__(self, y):   
491         """ x.__le__(y) <==> x<=y """ 
492         pass 
493  
494     def __lt__(self, y):   
495         """ x.__lt__(y) <==> x<y """ 
496         pass 
497  
498     def __mod__(self, y):   
499         """ x.__mod__(y) <==> x%y """ 
500         pass 
501  
502     def __mul__(self, n):   
503         """ x.__mul__(n) <==> x*n """ 
504         pass 
505  
506     @staticmethod # known case of __new__ 
507     def __new__(S, *more):   
508         """ T.__new__(S, ...) -> a new object with type S, a subtype of T """ 
509         pass 
510  
511     def __ne__(self, y):   
512         """ x.__ne__(y) <==> x!=y """ 
513         pass 
514  
515     def __repr__(self):   
516         """ x.__repr__() <==> repr(x) """ 
517         pass 
518  
519     def __rmod__(self, y):   
520         """ x.__rmod__(y) <==> y%x """ 
521         pass 
522  
523     def __rmul__(self, n):   
524         """ x.__rmul__(n) <==> n*x """ 
525         pass 
526  
527     def __sizeof__(self):   
528         """ S.__sizeof__() -> size of S in memory, in bytes """ 
529         pass 
530  
531     def __str__(self):   
532         """ x.__str__() <==> str(x) """ 
533         pass 
534  
535 str

 

四、列表、元祖

1.列表(list)

列表常用操作:

索引(index)

python基础2之字符串、列表、字典、集合详解编程语言

 1 a=["a","b","c",1,2,3] 
 2 print(a.index("a"))#不加位置参数 
 3 输出: 
 4 0 
 5  
 6 a=["a","b","c","a",2,3] 
 7 print(a.index("a")) 
 8 print(a.index("a",1,5))#从索引1开始到5之间查找 
 9 输出: 
10 0 
11 3

切片

python基础2之字符串、列表、字典、集合详解编程语言

 1 >>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"] 
 2 >>> names[1:4]  #取下标1至下标4之间的数字,包括1,不包括4 
 3 ['Tenglan', 'Eric', 'Rain'] 
 4 >>> names[1:-1] #取下标1至-1的值,不包括-1 
 5 ['Tenglan', 'Eric', 'Rain', 'Tom'] 
 6 >>> names[0:3]  
 7 ['Alex', 'Tenglan', 'Eric'] 
 8 >>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样 
 9 ['Alex', 'Tenglan', 'Eric'] 
10 >>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写 
11 ['Rain', 'Tom', 'Amy']  
12 >>> names[3:-1] #这样-1就不会被包含了 
13 ['Rain', 'Tom'] 
14 >>> names[-3:-1] #取最后两个效果同names[3:4] 
15 ['Tom','Amy'] 
16 >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个 
17 ['Alex', 'Eric', 'Tom']  
18 >>> names[::2] #和上句效果一样 
19 ['Alex', 'Eric', 'Tom']

追加(append)

python基础2之字符串、列表、字典、集合详解编程语言

1 a=["a","b","c","a",2,3] 
2 a.append("WD") 
3 print(a) 
4 输出: 
5 ['a', 'b', 'c', 'a', 2, 3, 'WD']

删除(del,pop)

python基础2之字符串、列表、字典、集合详解编程语言

 1 a=["a","b","c","d"] 
 2 del a[0] 
 3 print(a) 
 4 输出: 
 5 ['b', 'c', 'd'] 
 6  
 7 #pop 
 8  
 9 a=["a","b","c","d"] 
10 a.pop() 
11 print(a)#默认移除最后一个 
12 输出: 
13 ['a', 'b', 'c'] 
14 #移除制定位置元素 
15 a=["a","b","c","d"] 
16 a.pop(2)#移除位置2的元素等价del a[2] 
17 print(a) 
18 输出: 
19 ['a', 'b', 'd']

插入(insert)

python基础2之字符串、列表、字典、集合详解编程语言

1 a=["a","b","c","a",2,3] 
2 a.insert(0,"WD")#0代表索引,在0位置之前插入 
3 print(a) 
4 输出: 
5 ['WD', 'a', 'b', 'c', 'a', 2, 3]

扩展(extend)

python基础2之字符串、列表、字典、集合详解编程语言

1 a=["a","b","c"] 
2 b=[1,2,3] 
3 a.extend(b) 
4 print(a) 
5 输出: 
6 ['a', 'b', 'c', 1, 2, 3]

统计(count)

python基础2之字符串、列表、字典、集合详解编程语言

1 >>> names 
2 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3'] 
3 >>> names.sort() 
4 >>> names 
5 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom'] 
6  
7 >>> names.reverse() #反转 
8 >>> names 
9 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']

排序(sort)

python基础2之字符串、列表、字典、集合详解编程语言

 1 >>> names 
 2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3] 
 3 >>> names.sort() #排序 
 4 Traceback (most recent call last): 
 5   File "<stdin>", line 1, in <module> 
 6 TypeError: unorderable types: int() < str()   #3.0里不同数据类型不能放在一起排序了 
 7 >>> names[-3] = '1' 
 8 >>> names[-2] = '2' 
 9 >>> names[-1] = '3' 
10 >>> names 
11 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3'] 
12 >>> names.sort() 
13 >>> names 
14 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom'] 
15  
16 >>> names.reverse() #反转 
17 >>> names 
18 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']

循环(for)

python基础2之字符串、列表、字典、集合详解编程语言

1 a=["a","b","c","d"] 
2 for i in a: 
3     print(i) 
4 输出: 
5 a 
6 b 
7 c 
8 d

包含(in)

python基础2之字符串、列表、字典、集合详解编程语言

1 a=["alex","wusir","wd"] 
2 if "alex" in a: 
3     print("oh you are here!") 
4 输出: 
5 oh you are here!

长度(len)

python基础2之字符串、列表、字典、集合详解编程语言

1 a=["a","b","c"] 
2 print(len(a)) 
3 结果: 
4 3

清空(clear)

python基础2之字符串、列表、字典、集合详解编程语言

1 a=["a","b","c"] 
2 a.clear() 
3 print(a) 
4 结果: 
5 []

列表中含有的方法:

python基础2之字符串、列表、字典、集合详解编程语言

  1 class list(object): 
  2     """ 
  3     list() -> new empty list 
  4     list(iterable) -> new list initialized from iterable's items 
  5     """ 
  6     def append(self, p_object): # real signature unknown; restored from __doc__ 
  7         """ L.append(object) -- append object to end """ 
  8         pass 
  9  
 10     def count(self, value): # real signature unknown; restored from __doc__ 
 11         """ L.count(value) -> integer -- return number of occurrences of value """ 
 12         return 0 
 13  
 14     def extend(self, iterable): # real signature unknown; restored from __doc__ 
 15         """ L.extend(iterable) -- extend list by appending elements from the iterable """ 
 16         pass 
 17  
 18     def index(self, value, start=None, stop=None): # real signature unknown; restored from __doc__ 
 19         """ 
 20         L.index(value, [start, [stop]]) -> integer -- return first index of value. 
 21         Raises ValueError if the value is not present. 
 22         """ 
 23         return 0 
 24  
 25     def insert(self, index, p_object): # real signature unknown; restored from __doc__ 
 26         """ L.insert(index, object) -- insert object before index """ 
 27         pass 
 28  
 29     def pop(self, index=None): # real signature unknown; restored from __doc__ 
 30         """ 
 31         L.pop([index]) -> item -- remove and return item at index (default last). 
 32         Raises IndexError if list is empty or index is out of range. 
 33         """ 
 34         pass 
 35  
 36     def remove(self, value): # real signature unknown; restored from __doc__ 
 37         """ 
 38         L.remove(value) -- remove first occurrence of value. 
 39         Raises ValueError if the value is not present. 
 40         """ 
 41         pass 
 42  
 43     def reverse(self): # real signature unknown; restored from __doc__ 
 44         """ L.reverse() -- reverse *IN PLACE* """ 
 45         pass 
 46  
 47     def sort(self, cmp=None, key=None, reverse=False): # real signature unknown; restored from __doc__ 
 48         """ 
 49         L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*; 
 50         cmp(x, y) -> -1, 0, 1 
 51         """ 
 52         pass 
 53  
 54     def __add__(self, y): # real signature unknown; restored from __doc__ 
 55         """ x.__add__(y) <==> x+y """ 
 56         pass 
 57  
 58     def __contains__(self, y): # real signature unknown; restored from __doc__ 
 59         """ x.__contains__(y) <==> y in x """ 
 60         pass 
 61  
 62     def __delitem__(self, y): # real signature unknown; restored from __doc__ 
 63         """ x.__delitem__(y) <==> del x[y] """ 
 64         pass 
 65  
 66     def __delslice__(self, i, j): # real signature unknown; restored from __doc__ 
 67         """ 
 68         x.__delslice__(i, j) <==> del x[i:j] 
 69                     
 70                    Use of negative indices is not supported. 
 71         """ 
 72         pass 
 73  
 74     def __eq__(self, y): # real signature unknown; restored from __doc__ 
 75         """ x.__eq__(y) <==> x==y """ 
 76         pass 
 77  
 78     def __getattribute__(self, name): # real signature unknown; restored from __doc__ 
 79         """ x.__getattribute__('name') <==> x.name """ 
 80         pass 
 81  
 82     def __getitem__(self, y): # real signature unknown; restored from __doc__ 
 83         """ x.__getitem__(y) <==> x[y] """ 
 84         pass 
 85  
 86     def __getslice__(self, i, j): # real signature unknown; restored from __doc__ 
 87         """ 
 88         x.__getslice__(i, j) <==> x[i:j] 
 89                     
 90                    Use of negative indices is not supported. 
 91         """ 
 92         pass 
 93  
 94     def __ge__(self, y): # real signature unknown; restored from __doc__ 
 95         """ x.__ge__(y) <==> x>=y """ 
 96         pass 
 97  
 98     def __gt__(self, y): # real signature unknown; restored from __doc__ 
 99         """ x.__gt__(y) <==> x>y """ 
100         pass 
101  
102     def __iadd__(self, y): # real signature unknown; restored from __doc__ 
103         """ x.__iadd__(y) <==> x+=y """ 
104         pass 
105  
106     def __imul__(self, y): # real signature unknown; restored from __doc__ 
107         """ x.__imul__(y) <==> x*=y """ 
108         pass 
109  
110     def __init__(self, seq=()): # known special case of list.__init__ 
111         """ 
112         list() -> new empty list 
113         list(iterable) -> new list initialized from iterable's items 
114         # (copied from class doc) 
115         """ 
116         pass 
117  
118     def __iter__(self): # real signature unknown; restored from __doc__ 
119         """ x.__iter__() <==> iter(x) """ 
120         pass 
121  
122     def __len__(self): # real signature unknown; restored from __doc__ 
123         """ x.__len__() <==> len(x) """ 
124         pass 
125  
126     def __le__(self, y): # real signature unknown; restored from __doc__ 
127         """ x.__le__(y) <==> x<=y """ 
128         pass 
129  
130     def __lt__(self, y): # real signature unknown; restored from __doc__ 
131         """ x.__lt__(y) <==> x<y """ 
132         pass 
133  
134     def __mul__(self, n): # real signature unknown; restored from __doc__ 
135         """ x.__mul__(n) <==> x*n """ 
136         pass 
137  
138     @staticmethod # known case of __new__ 
139     def __new__(S, *more): # real signature unknown; restored from __doc__ 
140         """ T.__new__(S, ...) -> a new object with type S, a subtype of T """ 
141         pass 
142  
143     def __ne__(self, y): # real signature unknown; restored from __doc__ 
144         """ x.__ne__(y) <==> x!=y """ 
145         pass 
146  
147     def __repr__(self): # real signature unknown; restored from __doc__ 
148         """ x.__repr__() <==> repr(x) """ 
149         pass 
150  
151     def __reversed__(self): # real signature unknown; restored from __doc__ 
152         """ L.__reversed__() -- return a reverse iterator over the list """ 
153         pass 
154  
155     def __rmul__(self, n): # real signature unknown; restored from __doc__ 
156         """ x.__rmul__(n) <==> n*x """ 
157         pass 
158  
159     def __setitem__(self, i, y): # real signature unknown; restored from __doc__ 
160         """ x.__setitem__(i, y) <==> x[i]=y """ 
161         pass 
162  
163     def __setslice__(self, i, j, y): # real signature unknown; restored from __doc__ 
164         """ 
165         x.__setslice__(i, j, y) <==> x[i:j]=y 
166                     
167                    Use  of negative indices is not supported. 
168         """ 
169         pass 
170  
171     def __sizeof__(self): # real signature unknown; restored from __doc__ 
172         """ L.__sizeof__() -- size of L in memory, in bytes """ 
173         pass 
174  
175     __hash__ = None 
176  
177 list


2.元祖(tuple)

元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表

元祖操作:

 

  • 索引
  • 切片
  • 循环
  • 长度
  • 包含

 

五、字典

3.字典

字典的特性:

  • dict是无序的
  • key必须是唯一的,天生去重

字典操作:

索引(key)

python基础2之字符串、列表、字典、集合详解编程语言

1 a={"name":"WD","age":"22","job":"IT"} 
2 print(a["name"]) 
3 输出: 
4 WD

增加 

python基础2之字符串、列表、字典、集合详解编程语言

1 a={"name":"WD","age":"22","job":"IT"} 
2 a["city"]="chengdu" 
3 print(a) 
4 输出: 
5 {'city': 'chengdu', 'age': '22', 'job': 'IT', 'name': 'WD'}

修改

python基础2之字符串、列表、字典、集合详解编程语言

1 a={"name":"WD","age":"22","job":"IT"} 
2 a["name"]="alex" 
3 print(a) 
4 输出: 
5 {'name': 'alex', 'job': 'IT', 'age': '22'}

删除(del、pop)

python基础2之字符串、列表、字典、集合详解编程语言

 1 >>> info 
 2 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': '武藤兰'} 
 3 >>> info.pop("stu1101") #标准删除姿势 
 4 '武藤兰' 
 5 >>> info 
 6 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'} 
 7 >>> del info['stu1103'] #换个姿势删除 
 8 >>> info 
 9 {'stu1102': 'LongZe Luola'} 
10 >>>  
11 >>>  
12 >>>  
13 >>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'} 
14 >>> info 
15 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'} #随机删除 
16 >>> info.popitem() 
17 ('stu1102', 'LongZe Luola') 
18 >>> info 
19 {'stu1103': 'XiaoZe Maliya'}

查找(get) 

python基础2之字符串、列表、字典、集合详解编程语言

1 >>> msg={"name":"WD","age":22,"job":"IT"} 
2 >>> msg["name"]#如果获取索引不存在会报错 
3 'WD' 
4 >>> "name" in msg#标准姿势 
5 True 
6 >>> msg.get("name")#get获取不到元素返回None不会报错 
7 'WD'

键、值、键值对
python基础2之字符串、列表、字典、集合详解编程语言

1 msg={"name":"WD","age":22,"job":"IT"} 
2 print(msg.keys())#打印所有的key 
3 print(msg.values())#打印所有的值 
4 print(msg.items())#打印键值对 
5 结果: 
6 dict_keys(['job', 'age', 'name']) 
7 dict_values(['IT', 22, 'WD']) 
8 dict_items([('job', 'IT'), ('age', 22), ('name', 'WD')])

循环(for、enumerate)

python基础2之字符串、列表、字典、集合详解编程语言

 1 for 
 2 #方法1 
 3 for key in info: 
 4     print(key,info[key]) 
 5  
 6 #方法2 
 7 for k,v in info.items(): #会先把dict转成list,数据里大不要用 
 8     print(k,v) 
 9  
10 enumerate#自动为对象添加序号 
11 a={"name":"WD","age":22,"job":"IT"} 
12 for i,k in enumerate(a.keys()):#此处有坑,a.keys()每次顺序可能不一样 
13     print(i,a[k]) 
14 结果: 
15 0 22 
16 1 IT 
17 2 WD

长度(len)

python基础2之字符串、列表、字典、集合详解编程语言

1 msg={"name":"WD","age":22,"job":"IT"} 
2 print(len(msg)) 
3 结果: 
4 3

其他操作(update、setdefault)
python基础2之字符串、列表、字典、集合详解编程语言

 1 update#字典更新,若key相同覆盖,key不存在则增加  
 2 a={"name":"WD","age":22,"job":"IT"} 
 3 b={"name":"alex","age":33,"city":"beijing"} 
 4 a.update(b) 
 5 print(a) 
 6 结果: 
 7 {'name': 'alex', 'age': 33, 'city': 'beijing', 'job': 'IT'} 
 8  
 9 setdefault#为字典设置默认值,若字典中没有该值,采用默认。 
10 a={"name":"WD","age":22,"job":"IT"} 
11 a.setdefault("name","alex") 
12 print(a) 
13 结果: 
14 {'name': 'WD', 'job': 'IT', 'age': 22}#为采用默认值

字典中含有的方法:

python基础2之字符串、列表、字典、集合详解编程语言

  1 class dict(object): 
  2     """ 
  3     dict() -> new empty dictionary 
  4     dict(mapping) -> new dictionary initialized from a mapping object's 
  5         (key, value) pairs 
  6     dict(iterable) -> new dictionary initialized as if via: 
  7         d = {} 
  8         for k, v in iterable: 
  9             d[k] = v 
 10     dict(**kwargs) -> new dictionary initialized with the name=value pairs 
 11         in the keyword argument list.  For example:  dict(one=1, two=2) 
 12     """ 
 13  
 14     def clear(self): # real signature unknown; restored from __doc__ 
 15         """ 清除内容 """ 
 16         """ D.clear() -> None.  Remove all items from D. """ 
 17         pass 
 18  
 19     def copy(self): # real signature unknown; restored from __doc__ 
 20         """ 浅拷贝 """ 
 21         """ D.copy() -> a shallow copy of D """ 
 22         pass 
 23  
 24     @staticmethod # known case 
 25     def fromkeys(S, v=None): # real signature unknown; restored from __doc__ 
 26         """ 
 27         dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v. 
 28         v defaults to None. 
 29         """ 
 30         pass 
 31  
 32     def get(self, k, d=None): # real signature unknown; restored from __doc__ 
 33         """ 根据key获取值,d是默认值 """ 
 34         """ D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None. """ 
 35         pass 
 36  
 37     def has_key(self, k): # real signature unknown; restored from __doc__ 
 38         """ 是否有key """ 
 39         """ D.has_key(k) -> True if D has a key k, else False """ 
 40         return False 
 41  
 42     def items(self): # real signature unknown; restored from __doc__ 
 43         """ 所有项的列表形式 """ 
 44         """ D.items() -> list of D's (key, value) pairs, as 2-tuples """ 
 45         return [] 
 46  
 47     def iteritems(self): # real signature unknown; restored from __doc__ 
 48         """ 项可迭代 """ 
 49         """ D.iteritems() -> an iterator over the (key, value) items of D """ 
 50         pass 
 51  
 52     def iterkeys(self): # real signature unknown; restored from __doc__ 
 53         """ key可迭代 """ 
 54         """ D.iterkeys() -> an iterator over the keys of D """ 
 55         pass 
 56  
 57     def itervalues(self): # real signature unknown; restored from __doc__ 
 58         """ value可迭代 """ 
 59         """ D.itervalues() -> an iterator over the values of D """ 
 60         pass 
 61  
 62     def keys(self): # real signature unknown; restored from __doc__ 
 63         """ 所有的key列表 """ 
 64         """ D.keys() -> list of D's keys """ 
 65         return [] 
 66  
 67     def pop(self, k, d=None): # real signature unknown; restored from __doc__ 
 68         """ 获取并在字典中移除 """ 
 69         """ 
 70         D.pop(k[,d]) -> v, remove specified key and return the corresponding value. 
 71         If key is not found, d is returned if given, otherwise KeyError is raised 
 72         """ 
 73         pass 
 74  
 75     def popitem(self): # real signature unknown; restored from __doc__ 
 76         """ 获取并在字典中移除 """ 
 77         """ 
 78         D.popitem() -> (k, v), remove and return some (key, value) pair as a 
 79         2-tuple; but raise KeyError if D is empty. 
 80         """ 
 81         pass 
 82  
 83     def setdefault(self, k, d=None): # real signature unknown; restored from __doc__ 
 84         """ 如果key不存在,则创建,如果存在,则返回已存在的值且不修改 """ 
 85         """ D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D """ 
 86         pass 
 87  
 88     def update(self, E=None, **F): # known special case of dict.update 
 89         """ 更新 
 90             {'name':'alex', 'age': 18000} 
 91             [('name','sbsbsb'),] 
 92         """ 
 93         """ 
 94         D.update([E, ]**F) -> None.  Update D from dict/iterable E and F. 
 95         If E present and has a .keys() method, does:     for k in E: D[k] = E[k] 
 96         If E present and lacks .keys() method, does:     for (k, v) in E: D[k] = v 
 97         In either case, this is followed by: for k in F: D[k] = F[k] 
 98         """ 
 99         pass 
100  
101     def values(self): # real signature unknown; restored from __doc__ 
102         """ 所有的值 """ 
103         """ D.values() -> list of D's values """ 
104         return [] 
105  
106     def viewitems(self): # real signature unknown; restored from __doc__ 
107         """ 所有项,只是将内容保存至view对象中 """ 
108         """ D.viewitems() -> a set-like object providing a view on D's items """ 
109         pass 
110  
111     def viewkeys(self): # real signature unknown; restored from __doc__ 
112         """ D.viewkeys() -> a set-like object providing a view on D's keys """ 
113         pass 
114  
115     def viewvalues(self): # real signature unknown; restored from __doc__ 
116         """ D.viewvalues() -> an object providing a view on D's values """ 
117         pass 
118  
119     def __cmp__(self, y): # real signature unknown; restored from __doc__ 
120         """ x.__cmp__(y) <==> cmp(x,y) """ 
121         pass 
122  
123     def __contains__(self, k): # real signature unknown; restored from __doc__ 
124         """ D.__contains__(k) -> True if D has a key k, else False """ 
125         return False 
126  
127     def __delitem__(self, y): # real signature unknown; restored from __doc__ 
128         """ x.__delitem__(y) <==> del x[y] """ 
129         pass 
130  
131     def __eq__(self, y): # real signature unknown; restored from __doc__ 
132         """ x.__eq__(y) <==> x==y """ 
133         pass 
134  
135     def __getattribute__(self, name): # real signature unknown; restored from __doc__ 
136         """ x.__getattribute__('name') <==> x.name """ 
137         pass 
138  
139     def __getitem__(self, y): # real signature unknown; restored from __doc__ 
140         """ x.__getitem__(y) <==> x[y] """ 
141         pass 
142  
143     def __ge__(self, y): # real signature unknown; restored from __doc__ 
144         """ x.__ge__(y) <==> x>=y """ 
145         pass 
146  
147     def __gt__(self, y): # real signature unknown; restored from __doc__ 
148         """ x.__gt__(y) <==> x>y """ 
149         pass 
150  
151     def __init__(self, seq=None, **kwargs): # known special case of dict.__init__ 
152         """ 
153         dict() -> new empty dictionary 
154         dict(mapping) -> new dictionary initialized from a mapping object's 
155             (key, value) pairs 
156         dict(iterable) -> new dictionary initialized as if via: 
157             d = {} 
158             for k, v in iterable: 
159                 d[k] = v 
160         dict(**kwargs) -> new dictionary initialized with the name=value pairs 
161             in the keyword argument list.  For example:  dict(one=1, two=2) 
162         # (copied from class doc) 
163         """ 
164         pass 
165  
166     def __iter__(self): # real signature unknown; restored from __doc__ 
167         """ x.__iter__() <==> iter(x) """ 
168         pass 
169  
170     def __len__(self): # real signature unknown; restored from __doc__ 
171         """ x.__len__() <==> len(x) """ 
172         pass 
173  
174     def __le__(self, y): # real signature unknown; restored from __doc__ 
175         """ x.__le__(y) <==> x<=y """ 
176         pass 
177  
178     def __lt__(self, y): # real signature unknown; restored from __doc__ 
179         """ x.__lt__(y) <==> x<y """ 
180         pass 
181  
182     @staticmethod # known case of __new__ 
183     def __new__(S, *more): # real signature unknown; restored from __doc__ 
184         """ T.__new__(S, ...) -> a new object with type S, a subtype of T """ 
185         pass 
186  
187     def __ne__(self, y): # real signature unknown; restored from __doc__ 
188         """ x.__ne__(y) <==> x!=y """ 
189         pass 
190  
191     def __repr__(self): # real signature unknown; restored from __doc__ 
192         """ x.__repr__() <==> repr(x) """ 
193         pass 
194  
195     def __setitem__(self, i, y): # real signature unknown; restored from __doc__ 
196         """ x.__setitem__(i, y) <==> x[i]=y """ 
197         pass 
198  
199     def __sizeof__(self): # real signature unknown; restored from __doc__ 
200         """ D.__sizeof__() -> size of D in memory, in bytes """ 
201         pass 
202  
203     __hash__ = None 
204  
205 dict

 

六、集合

集合是一个无序的,不重复的数据组合,特性:

  • 去重,把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集等关系
常用操作:
python基础2之字符串、列表、字典、集合详解编程语言

 1 s = set([3,5,9,10])      #创建一个数值集合   
 2    
 3 t = set("Hello")         #创建一个唯一字符的集合   
 4  
 5  
 6 a = t | s          # t 和 s的并集   
 7    
 8 b = t & s          # t 和 s的交集   
 9    
10 c = t – s          # 求差集(项在t中,但不在s中)   
11    
12 d = t ^ s          # 对称差集(项在t或s中,但不会同时出现在二者中)   
13    
14     
15    
16 基本操作:   
17    
18 t.add('x')            # 添加一项   
19    
20 s.update([10,37,42])  # 在s中添加多项   
21    
22     
23    
24 使用remove()可以删除一项:   
25    
26 t.remove('H')   
27    
28    
29 len(s)   
30 set 的长度   
31    
32 x in s   
33 测试 x 是否是 s 的成员   
34    
35 x not in s   
36 测试 x 是否不是 s 的成员   
37    
38 s.issubset(t)   
39 s <= t   
40 测试是否 s 中的每一个元素都在 t 中   
41    
42 s.issuperset(t)   
43 s >= t   
44 测试是否 t 中的每一个元素都在 s 中   
45    
46 s.union(t)   
47 s | t   
48 返回一个新的 set 包含 s 和 t 中的每一个元素   
49    
50 s.intersection(t)   
51 s & t   
52 返回一个新的 set 包含 s 和 t 中的公共元素   
53    
54 s.difference(t)   
55 s - t   
56 返回一个新的 set 包含 s 中有但是 t 中没有的元素   
57    
58 s.symmetric_difference(t)   
59 s ^ t   
60 返回一个新的 set 包含 s 和 t 中不重复的元素   
61    
62 s.copy()   
63 返回 set “s”的一个浅复制

 

七、练习题

1.三级菜单

需求:

1. 运行程序输出第一级菜单
2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单
3. 菜单数据保存在文件中

代码:

python基础2之字符串、列表、字典、集合详解编程语言

 1 #/usr/bin/env python 
 2 # -*- coding:utf-8 -*- 
 3 #Author:W-D 
 4 flag=True 
 5 menu_list=[]#保存文件中每条菜单信息 
 6 menu_key=[]#保存一级菜单中的key 
 7 menu = {}#保存需要用的菜单 
 8 with open ("menu.txt","r",encoding="utf-8") as f: 
 9     for line in f: 
10         msg=line.strip().split(":")#将文件中的每行按:分割成列表 
11         if msg[0] not in menu_key: 
12             menu_key.append(msg[0])#将一级菜单中的key追加到列表中 
13         menu_list.append(msg)#将文件中每条信息追加到列表中,用于后续处理 
14     for city in menu_key:#外层循环城市 
15         menu3 = {}#这个是个坑!!每次循环完结果出来以后,需要将第是三级菜单清空,会影响下一个城市所生成的字典 
16         for each in menu_list:# 
17             if city==each[0]: 
18                 key,value=each[1].split(" ")[0],each[1].split(" ")[1:]#生成三级菜单的key和value 
19                 menu3[key]=value#同上 
20                 menu[city]=menu3#同上 
21 while flag: 
22     for i in menu: 
23         print(i) 
24     choice=input("请输入您的选择(q退出):") 
25     if choice in menu: 
26         while flag: 
27             for i1 in menu[choice]: 
28                 print(i1) 
29             choice1 = input("请输入您的选择(q退出,b返回):") 
30             if choice1 in menu[choice]: 
31                 while flag: 
32                     for i2 in menu[choice][choice1]: 
33                         print(i2) 
34                     choice2 = input("请输入您的选择(q退出,b返回):") 
35                     if choice2 == 'q': 
36                         flag = False 
37                         break 
38                     elif choice2 == 'b': 
39                         break 
40                     else: 
41                         print("已经到底了!") 
42             elif choice1=='q': 
43                 flag=False 
44                 break 
45             elif choice1=='b': 
46                 break 
47     if choice=='q': 
48          flag=False 
49          break

三级菜单之常用方法

菜单文件:
python基础2之字符串、列表、字典、集合详解编程语言

1 北京市:昌平 A公司 B公司 C公司, 
2 北京市:回龙观 E公司 F公司 G公司 
3 上海市:浦东 H公司 I公司 J公司 
4 上海市:虹桥 U公司 V公司 W公司 
5 成都市:金牛区 O公司 P公司 Q公司 
6 成都市:高新区 X公司 Y公司 Z公司

menu.txt

大王的无敌方法:
python基础2之字符串、列表、字典、集合详解编程语言

 1 menu = { 
 2     '北京':{ 
 3         '海淀':{ 
 4             '五道口':{ 
 5                 'soho':{}, 
 6                 '网易':{}, 
 7                 'google':{} 
 8             }, 
 9             '中关村':{ 
10                 '爱奇艺':{}, 
11                 '汽车之家':{}, 
12                 'youku':{}, 
13             }, 
14             '上地':{ 
15                 '百度':{}, 
16             }, 
17         }, 
18         '昌平':{ 
19             '沙河':{ 
20                 '老男孩':{}, 
21                 '北航':{}, 
22             }, 
23             '天通苑':{}, 
24             '回龙观':{}, 
25         }, 
26         '朝阳':{}, 
27         '东城':{}, 
28     }, 
29     '上海':{ 
30         '闵行':{ 
31             "人民广场":{ 
32                 '炸鸡店':{} 
33             } 
34         }, 
35         '闸北':{ 
36             '火车战':{ 
37                 '携程':{} 
38             } 
39         }, 
40         '浦东':{}, 
41     }, 
42     '山东':{}, 
43 } 
44  
45  
46 exit_flag = False 
47 current_layer = menu 
48  
49 layers = [menu] 
50  
51 while not  exit_flag: 
52     for k in current_layer: 
53         print(k) 
54     choice = input(">>:").strip() 
55     if choice == "b": 
56         current_layer = layers[-1] 
57         #print("change to laster", current_layer) 
58         layers.pop() 
59     elif choice not  in current_layer:continue 
60     else: 
61         layers.append(current_layer) 
62         current_layer = current_layer[choice]

三级菜单之文艺方法

 

 

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/12468.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论