2 #-*- coding:utf-8 -*-
3
4 #python中有如下数据类型:数字、字符串、列表、字典、元组、布尔值
5 #6 #一、整型数字(int)
7 #1、应注意:
8 #a.在python2中分为整型和长整型(long),是根据数字大小区分
9 #b.在pycharm中输入相关类型名如int,然后按住ctrl键点击鼠标左键就可看到该类型的所有方法
10 #2、方法:
11 #a. - int(sub)
12 #可用来转换数据类型,例如可将字符串中的数字转为整型数字:
13 #s = '123'
14 #i = int(s)
15 #>>> i = 123
16 #num = '0010'
17 #v = int(num,base = 2)----(base =2 则表示将num以2进制转换为10进制)
18 #>>> v = 2
19 #v = int(num,base = 10)----(base =10 则表示将num以10进制转换为10进制)
20 #>>> v = 10
21 #b. - sub.bit_length()
22 #可用来计算数字用二进制(注:不计算前面的补0位数)表示所需的位数
23 #age = 3 (3的二进制为 11 )
24 #age.bit_length()
25 #>>> 2
26 #age = 5 (5的二进制为 101)
27 #age.bit_length()
28 #>>> 3
29 #二、字符串(str)
30 #1、字符串一般以引号引起来,引号内的内容即为字符串;
31 #2、字符串中的字符不可修改;
32 #3、方法:
33 #a. str.capitalize()
34 #用于将字符串首字母转换为大写。
35 #name = "liming"
36 #name.capitalize()
37 #>>>"Liming"
38 #b. 1>sr.casefold()
39 #2>sr.lower()
40 #上述两个方法用于将字符串中的大写字母转换为小写,但casefold()功能更大,可将很多未知的对应关系进行大小写转换
41 #而lower()只能简单的平时遇到的英文等。
42 #name = "liMinG "
43 #name.casefold()
44 #>>> "liming"
45 #name.lower()
46 #>>> "liming"
47 #c. 1>str.center(width[,fillchar])
48 #用于将字符串指定为指定宽度,并将str居中,两边用fillchar字符填充,fillchar为可选项,若没有则以空格填充。
49 #name = "Hello"
50 #name.center(15,"*")
51 #>>>"*****Hello*****"
52 #2>str.ljust(width[,fillchar])
53 #用于将字符串指定为指定宽度,并将str居左,右边用fillchar字符填充,fillchar为可选项,若没有则以空格填充。
54 #name = "Hello"
55 #name.ljust(15,"*")
56 #>>>"Hello**********"
57 #3>str.rjust(width[,fillchar])
58 #用于将字符串指定为指定宽度,并将str居右,左边用fillchar字符填充,fillchar为可选项,若没有则以空格填充。
59 #name = "Hello"
60 #name.rjust(15, "*")
61 #>> > "**********Hello"
62 #4>str.zfill(width)
63 #用于将字符串指定为指定宽度,并以0填充在str前面形成长度为width的字符串。
64 #name = "Hello"
65 #name.zfill(15)
66 #>> > "0000000000Hello"
67 #d. str.count(sub[,start[,end]])
68 #用于统计字符串str中的sub出现的次数,返回一个int。其中start用于指定开始位置,end用于指定结束位置,二者均为可选项,
69 #若没有指定则默认统计整个字符串。(start=< [指定的位置]
70 #name = "hello world"
71 #name.count("o")
72 #>>> 2
73 #name.count("o",5,11)
74 #>>> 1
75 #e. 1>str.startswith(sub[,start[,end]])
76 #2>str.endswith(sub[,start[,end]])
77 #上诉两个方法分别用于判断字符串str是否以子序列sub作为开始或者结束,返回一个布尔值。其中start用于指定开始位置,
78 #end用于指定结束位置,二者均为可选项, 若没有指定则默认统计整个字符串。(start=< [指定的位置]
79 #name = "Hello"
80 #name.startswith("H")
81 #name.expandtabs()
82 #>>>True
83 #name.endswith("lo")
84 #>>>True
85 #f. str.expandtabs([tabsize = int])
86 #用于(断句)将字符串中"\t"转换为指定宽度的tab键分割,默认一个tab = 8个空格。
87 #name = "Hel\tlo"
88 #name.expandtabs(2)
89 #>>>"Hel lo"
90 #g. str.find(sub[,start[,end]])
91 #用于查找字符串str中的子序列sub在字符串的位置,从开始往后找,返回一个位置int,如果没找到,返回 -1 。
92 #其中start用于指定开始位置,end用于指定结束位置,二者均为可选项,若没有指定则默认统计整个字符串。(start=< [指定的位置]
93 #name = "Hello"
94 #name.find("e")
95 #>>> 1
96 #name.find("l")
97 #>>> 2
98 #name.find("l",3,4)
99 #>>> 3
100 #h. str.format()
101 #用于格式化字符串(传值),用于传递大括号{}内的内容,有多种方式:
102 #①按照变量名传递
103 #st = "I am {name},age {age}"
104 #info = st.format(name = "Liming",age = 18)
105 #print(info)
106 #>>> "I am Liming,age 18"
107 #108 #②按照索引(从0开始)传递
109 #st = "I am {0},age {1}"
110 #info = st.format("Liming",18)
111 #print(info)
112 #>>> "I am Liming,age 18"
113 #i. str.format_map()
114 #用于格式化字符串(传值),用于传递大括号{}内的内容,是以字典的形式进行传递:
115 #st = "I am {name},age {age}"
116 #info = st.format_map({"name":"Liming","age":18})
117 #print(info)
118 #>> > "I am Liming,age 18"
119 #j. str.inainum()
120 #判断字符串至少有一个字符,且是否只由数字或字母或二者组合组成,若为判断成立则输出True,反之则双输出False
121 #st = "abc123a"
122 #st.isalnum()
123 #>>> True
124 #k. str.isalpha()
125 #判断字符串至少有一个字符,且是否只由字母或者汉字或者二者组合组成(中英文),若为判断成立则输出True,反之则双输出False
126 #st = "abc123a"
127 #st.isalpha()
128 #>>> False
129 #st = "abcd"
130 #st.isalpha()
131 #>>> True
132 #st = "你好"
133 #st.isalpha()
134 #>> > True
135 #l. 1> str.isdigit()
136 #判断字符串是否只由十进制数字组成,若为判断成立则输出True,反之则双输出False
137 #>>满足①True:Unicode数字、byte数字(单字节)、全角数字(双字节)、罗马数字
138 #>> ②False:汉字数字
139 #>> ③Error:无
140 #st = "1234"
141 #st.isdigit()
142 #>>> True
143 #st = "四"
144 #st.isdigit()
145 #>>> False
146 #2> str.isdecimal()
147 #判断字符串是否只由数字组成,若为判断成立则输出True,反之则双输出False
148 #>> 满足①True:Unicode数字、全角数字(双字节)
149 #>> ②False: 汉字数字、罗马数字
150 #>> ③Error:byte数字(单字节)
151 #st = "1234"
152 #st.isdigit()
153 #>> > True
154 #st = "IV"
155 #st.isdigit()
156 #>> > False
157 #3> str.isnumeric()
158 #判断字符串是否只由数字组成,若为判断成立则输出True,反之则双输出False
159 #>> 满足①True:Unicode数字、全角数字(双字节)、罗马数字、汉字数字
160 #>> ②False: 无
161 #>> ③Error:byte数字(单字节)
162 #st = "1234"
163 #st.isnumeric()
164 #>>> True
165 #st = "四"
166 #st.isnumeric()
167 #>>> True
168 #m. str.isidentifier()
169 #用于检测字符串是否满足变形名的标识符,是则返回True,反之返回False
170 #st = "abc11"
171 #st.isidentifier()
172 #>>> True
173 #st = "123aaa"
174 #st.isidentifier()
175 #>>> False
176 #st = "_123aa"
177 #st.isidentifier()
178 #>>> True
179 #n. str.isprintable()
180 #用于检测字符串中是否有不可显示(print)的字符(\t \n等),如有返回False,反之True
181 #st = "qqw\t3112"
182 #st.isprintable()
183 #>>> False
184 #o. str.isspace()
185 #用于检测字符串是否全部由空格字符串组成(不是空字符串),是则返回True,反之False
186 #st = ""
187 #st.isspace()
188 #>>> False
189 #st = " "
190 #st.isspace()
191 #>>> True
192 #p. str.istitle()
193 #用于检测字符串是否为标题(即为字符串中每个单词是否首字母大写),是则返回True,反之False
194 #(可用str.title()将字符串转换为标题格式)
195 #st = "Abc is B"
196 #st.istitle()
197 #>>> False
198 #st = "Abc Is B"
199 #st.istitle()
200 #>>> True
201 #q. sub.join(str)
202 #以sub字符串作为拼接符,将str字符串中的每一个元素进行拼接
203 #sub = "_"
204 #205 #str = "ABCDEFG"
206 #str_sub = sub.join(str)
207 #>>> "A_B_C_D_E_F_G"
208 #r. 1>str.islower()
209 #检测字符串是否均为小写,是则返回True,反之False
210 #st = "AcccSd"
211 #st.islower()
212 #>>> False
213 #2>str.lower()
214 #用于将字符串中的每个字母转换为小写。
215 #st = "AcccSd"
216 #st.lower()
217 #>>> "accsd"
218 #s. 1>str.isupper()
219 #检测字符串是否均为大写,是则返回True,反之False
220 #st = "AcccSd"
221 #st.isupper()
222 #>>> False
223 #st = "ADDFA"
224 #st.isupper()
225 #>>> True
226 #2>str.upper()
227 #用于将字符串中的每个字母转换为大写。
228 #st = "AcccSd"
229 #st.upper()
230 #>>> "ACCCSD"
231 #t. 1>str.strip([char])
232 #①char为可选项,若不指定,则去清除字符串中首尾不显示的内容:空格,\t,\n等,对于字符串中间的空白内容无效。
233 #st = " A BCDD "
234 #st.strip()
235 #>>> "A BCDD"
236 #st = " \tAV DC\n "
237 #st.strip()
238 #>>> "AV DC"
239 #②若指定char,则会比对char中的字符与str中的字符,从两边进行清除char和str相同的字符(优先最多匹配)。
240 #st = "ABCDBA"
241 #st.strip("AB")
242 #>> > "CD"
243 #2>str.lstrip()
244 #①用去清除字符串中左边不显示的内容:空格,\t,\n等;
245 #st = " A BCDD "
246 #st.lstrip()
247 #>>> "A BCDD "
248 #②同上②
249 #3 > str.rstrip()
250 #①用去清除字符串中右边不显示的内容:空格,\t,\n等;
251 #st = " A BCDD "
252 #st.rstrip()
253 #>>> " A BCDD"
254 #②同上②
255 #u. 1>str.maketrans(str1,str2)
256 #用于制造替换的对应关系
257 #o = "abecimoku"
258 #a = "aeiou"
259 #b = "12345"
260 #c = str.maketrans(a,b)
261 #(c返回的是一个字典,a、b对应的asccii值)、
262 #2>str.translate(str.maketrans(str1,str2))
263 #结合上述的str.maketrans(str1,str2)生成的对应关系,而对新的字符串按此规则进行替换
264 #d = c.translate(c)
265 #>>> "1b2c3m4k5"
266 #v. 1>str.partition(char) str.rpartition()
267 #用于以指定的char作为分隔符并且包含char进行分割,分割为三部分(char必须指定)
268 #a = "abdcbf"
269 #b = a.partiton("b")
270 #>>> ["a","b","dcbf"]
271 #c = a.rpartition("b")
272 #>>> ["abdc","b","f"]
273 #2>str.spilt(char[,maxnum = -1]) str.rspilt(char[,maxnum = -1])
274 #用于以指定的char作为分隔符并且分割出不包含char进行分割;maxnum为可选项,默认为-1,则表示全部分割
275 #0表示不分割,1表示分割为两份,2为三份,以此类推
276 #a = "abdcbf"
277 #b = a.split("b")
278 #>>> ["a","dc","f"]
279 #b = a.split("b",0)
280 #>>> ["abdcbf"]
281 #b = a.split("b",1)
282 #>>> ["a","dcbf"]
283 #c = a.rsplit("b",1)
284 #>>> ["abdc","f"]
285 #3>str.splitlines([False])
286 #以"\n"作为分隔符进行分割,有True,False可选,默认为False;True则分割的字符串包含"\n",False则不包含。
287 #a = "abcd\nacfd\nadsa"
288 #b = a.splitlines()
289 #>>> ["abcd","acfd","adsa"]
290 #b = a.splitlines(True)
291 #>>> ["abcd\n","acfd\n","adsa"]
292 #w. str.swapcase()
293 #将字符串中的大写字符转换为小写,小写转换为大写。
294 #a = "aBcdE"
295 #b = a.swapcase()
296 #>>> "AbCDe"
297 #x. str.replace(old,new[,count])
298 #将字符串中的old字符或者子序列替换为new,指定count则替换不超过count此;默认不指定则表示全部替换。
299 #a = "helloworld"
300 #old = "l"
301 #new = "L"
302 #b = a.replace(old,new)
303 #>>> "heLLoworLd"
304 #三、列表(list)
305 #0、列表中的元素均有索引对应,所以说列表是有序的;
306 #1、列表是以中括号[]引起来,并且以“,”分隔;列表中的元素可以是数字(int)、字符串(str)、列表(list)、布尔值(bool)等;
307 #即所有的对象均可以放入列表;
308 #2、同样可以用索引和切片进行取值或者修改;
309 #a = [1,2,3,4]
310 #a[1] = 222
311 #print(a)
312 #>>> [1,222,3,4]
313 #3、列表内容是可以被修改(删除、增加、插入等);
314 #4、可以用in来判断某一元素是否存在列表中;
315 #5、字符串同样可以转换为列表(可以理解为在字符串中使用for循环将对象添加至列表)。反之若要将列表转换为字符串的话,①需要自己
316 #写for循环来迭代处理(针对列表中既有数字又有字符串);②若列表中只有字符串元素,则可以用join方法进行转换拼接;
317 #a = "abcdefg"
318 #b = list(a)
319 #>>> ['a','b','c','d','e','f','g']
320 #c = ['1',1,'a']
321 #d = ""
322 #for i in c:
323 #d += str(i)
324 #print(d)
325 #>>> "11a"
326 #e = ['a','b','1']
327 #d = ''.join(e)
328 #>>> "ab1"
329 #6、list的相关方法:
330 #a. list.append(sub)
331 #用于向列表末尾追加(增添)整个的元素sub,sub可以是任意对象(因为列表是可修改的,所以该方法直接使用,不需要重新赋值)。
332 #a = ['a','c']
333 #a.append('b')
334 #print(a)
335 #>>> ['a','c','b']
336 #b. list.clear()
337 #用于清空列表(删除列表中所有元素,返回的是空列表)(因为列表是可修改的,所以该方法直接使用,不需要重新赋值。)。
338 #a = ['a','c']
339 #a.clear()
340 #print(a)
341 #>>> []
342 #c. list.copy()
343 #用于复制(拷贝【浅拷贝】)列表,返回一个元素相同的新列表,需要有变量来接收。
344 #a = ['a','c']
345 #b = a.copy()
346 #print(b)
347 #>>> ['a','c']
348 #d. list.count(sub)
349 #用于计算列表中的某一元素sub出现的次数,返回一个int,需要有变量来接收。
350 #c = [1,2,3,1,1]
351 #d = c.count(1)
352 #print(d)
353 #>>> 3
354 #e. list.extend(iterable)
355 #用于扩展原列表,向列表中追加(增添)一个可迭代对象iterable对象的每一个元素。这个可迭代对象可以是列表或者字符串
356 #等的任意可迭代对象(因为列表是可修改的,所以该方法直接使用,不需要重新赋值),与append()方法不同的是,它是将可迭代
357 #对象的每个元素迭代添加到原列表中,而appen()是将传入的对象(无论是否为可迭代对象)作为整体添加到原列表中。
358 #a = ['a','c']
359 #a.extend(['b','d'])
360 #print(a)
361 #>>> ['a','c','b','d']
362 #a = ['a','c']
363 #a.extend("def")
364 #print(a)
365 #>>> ['a','c','d','e','f']
366 #a = ['a','c']
367 #a.append(['b', 'd'])
368 #print(a)
369 #>>> ['a','c',['b', 'd']]
370 #f. list.index(sub[,start[,end]])
371 #用于查找列表中某一元素sub的索引值(左边优先,即为从左往右查找,找到即返回索引值),同样可以指定查找的起始和结束位置
372 #,返回int,需用变量接收;弱若传入的sub不在查找的列表中则报错。
373 #a = [1,2,3,2,1]
374 #b = a.index(1)
375 #print(b)
376 #>>> 0
377 #a = [1, 2, 3, 2, 1]
378 #b = a.index(2,2,4)
379 #print(b)
380 #>>> 3
381 #g. list.insert(index,sub)
382 #用于向列表中插入元素,index指定插入位置的索引,sub为插入的元素。
383 #a = [1,2,4,5]
384 #a.index(0,6)
385 #print(a)
386 #>>> [6,1,2,4,5]
387 #h. list.pop([index])
388 #用于删除指定索引的元素,若不指定index,则默认删除最后一个元素,并获取删除的值。
389 #a = [1,2,4,5]
390 #b = a.pop()
391 #print(a)
392 #>>> [1,2,4]
393 #print(b)
394 #>>> 5
395 #c = a.pop(1)
396 #print(c)
397 #>>> [1,4,5]
398 #i. list.remove(sub)
399 #用于删除指定元素(左边优先)。
400 #a = [1,2,4,5]
401 #a.remove(4)
402 #print(a)
403 #>>> [1,2,5]
404 #j. del list
405 #注意del是一个语句,不是列表的方法,所以不必加();若del后加的是列表名,则表示删除整个列表;若del后加的是
406 #列表切片或者索引则删除指定切片或者索引内容。
407 #a = [1,2,3,4]
408 #del a
409 #print(a)
410 #>>> []
411 #b = ['a','b','c']
412 #del b[1]
413 #print(b)
414 #>>> ['a','c']
415 #k. list.reverse()
416 #用于反转列表。
417 #a = [1,2,3,4]
418 #a.reverse()
419 #print(a)
420 #>>> [4,3,2,1]
421 #l. list,sort([reverse = False])
422 #用于对列表元素排序,可选项reverse默认为False表示不反转排序(即从小到大排序),反之若reverse = True,则从大到小。
423 #a = [2,5,3,1,4]
424 #a.sort()
425 #print(a)
426 #>>> [1,2,3,4,5]
427 #a.sort(reverse = True)
428 #print(a)
429 #>>> [5,4,3,2,1]
430 #四、元组(tuple)
431 #0、元组也是有序的;
432 #1、元组是用()括起来的对象,元组中内容可以是str,int,list,tuple,bool等;
433 #a = (1,'avc',[1,2,3],True,(1,3,4))
434 #2、元组一旦被创建,其中的整体(一级)元素不可被修改(但是若元组中有一个列表元素,则可以对该元素修改),不能被增加或者删除;
435 #a = (1,'avc',[1,2,3],True,(1,3,4))
436 #a[2][0] = 111
437 #print(a)
438 #>>> (1,'avc',[111,2,3],True,(1,3,4))
439 #a = (1,'avc',[1,2,3],True,(1,3,4))
440 #a[0] = 111
441 #则会直接报错!!!~
442 #3、一般写元组的时候,推荐在最后加“,”;
443 #4、元组同样可以通过索引和切片访问(取值)元素;
444 #5、元组同样可以用For循环;
445 #6、字符串、列表同样可以用tuple()方法转换为元组;元组可以转换为列表;
446 #7、元组的基本方法:
447 #a. tuple.count(sub)
448 #用于获取指定元素在元组中出现的次数,返回一个int对象
449 #tu = (1,2,3,2,1)
450 #co = tu.count(1)
451 #print(co)
452 #>>> 2
453 #b. tuple.index(sub)
454 #用于获取元组中元素的索引(若元组中有多个相同的元素,则同样遵从左边优先规则),返回一个int对象
455 #tu = ('a','b','a',)
456 #co = tu.index('a')
457 #print(co)
458 #>>> 0
459 #五、字典
460 #1、字典是用{}括起来的对象(键值对);
461 #di = {'a':'1','b':'2'}
462 #其中 'a':'1' 为字典中的一个键值对, 'a'为字典的Key,'1'为字典的value
463 #2、元组中的value内容可以是str,int,list,tuple,bool,dict等;list、dict不能作为字典的key;
464 #3、字典是无序的;
465 #4、字典可以通过key获取相应value;
466 #di = {'a':'1','b':'2'}
467 #dia = di['a']
468 #print(dia)
469 #>>> '1'
470 #5、字典同样支持del删除指定的键值对;
471 #di = {'a':'1','b':'2'}
472 #del di['a']
473 #print(di)
474 #>>> ['b':'2']
475 #6、字典可以进行for循环,默认根据key进行循环;
476 #di = {'a':'1','b':'2'}
477 #for i in di:
478 #print(i)
479 #>>> 'a'
480 #'b'
481 #也可以的用字典的内置方法dict.keys()来获取字典的key值:
482 #di = {'a': '1', 'b': '2'}
483 #for k in di.keys():
484 #print(i)
485 #>>> 'a'
486 #'b'
487 #若想要获取字典的value值,可以用内置方法dict.values():
488 #di = {'a': '1', 'b': '2'}
489 #for v in di.values():
490 #print(i)
491 #>>> '1'
492 #'2'
493 #若想同时获取key和value则可以用内置方法dict.items():
494 #di = {'a': '1', 'b': '2'}
495 #for k,v in di.items():
496 #print(k,v)
497 #>>> 'a' '1'
498 #'b' '2'
499 #7、字典的基本方法:
500 #a. dict.clear()
501 #用于清空字典
502 #di = {'a': '1', 'b': '2'}
503 #di.clear()
504 #print(di)
505 #>>> {}
506 #b. dict.copy()
507 #用于复制(浅拷贝)字典
508 #di = {'a': '1', 'b': '2'}
509 #d = di.copy()
510 #print(d)
511 #>> > {'a': '1', 'b': '2'
512 #c. dict.fromkeys(iterable[,value])
513 #该方法为静态方法(暂不懂),根据一个可迭代对象创建一个字典,并指定统一的值(若不传入,则为None)
514 #第一个参数作为key,第二个参数作为value值
515 #di = dict.fromkeys(['a','b''c'])
516 #print(di)
517 #>>> {'a':None,'b':None,'c':None}
518 #di = dict.fromkeys(['a','b''c'],'abc')
519 #print(di)
520 #>>> {'a':'abc','b':'abc','c':'abc'}
521 #d. dict.get(key[,value])
522 #用于根据key获取值,若key不存在,可以指定默认值,若不指定则返回None
523 #di = {'a': '1', 'b': '2'}
524 #v = di.get('a')
525 #print(v)
526 #>>> '1'
527 #若取的值不存在有如下情况:
528 #di = {'a': '1', 'b': '2'}
529 #v = di.get('aa','abcd')
530 #print(v)
531 #>>> 'abcd'
532 #而通过索引key来取值,若key不存在,则报错。
533 #e. dict.pop(key[,value])
534 #用于移除并获取到指定指定的key对应的值,若key不存在,则返回指定的value值
535 #di = {'a': '1', 'b': '2'}
536 #v = di.pop('a')
537 #print(di,v)
538 #>>> {'b':'2'} '1'
539 #若指定的key不存在,则传入的value值可起到作用而不报错
540 #di = {'a': '1', 'b': '2'}
541 #v = di.pop('c','3')
542 #print(di, v)
543 #>> > {'a':'1','b': '2'} '3'
544 #f. dict.popitem()
545 #用于随机删除并获取键值对
546 #di = {'a': '1', 'b': '2'}
547 #v = di.popitem()
548 #print(di,v)
549 #>>> {'a':'1'} ('b',2)
550 #g. dict.setdefault(key,value)
551 #用于设置值,若key已存在在当前字典中,则设置无效并返回当前key的值;若key不存在,则设置将指定的key,value添加到字典中
552 #di = {'a': '1', 'b': '2'}
553 #v = di.setdefault('a','111')
554 #print(di,v)
555 #>>> {'a':'1','b':'2'} '1'
556 #v1 = di.setdefault('c','3')
557 #print(di,v1)
558 #>>> {'a':'1','b':'2','c':'3'} '3'
559 #h. dict.update({key:value})
560 #用于更新字典,key存在则更新指定的值,若不存在则直接添加到字典中
561 #①可以直接传入字典形式
562 #di = {'a':'1','b':'2'}
563 #di.update({'a':'111','c':'3'})
564 #print(di)
565 #>>> {'a':'111','b':'2','c':'3'}
566 #②可以指定key和value的形式进行传入
567 #di = {'a':'1','b':'2'}
568 #di.update(a = '111',c = '3')
569 #print(di)
570 #>>> {'a':'111','b':'2','c':'3'}
571 #六、布尔值(bool)
572 #在内存中bool值是以0 1存储的,0为False,1为True
573 #还有None '' () [] {}这些均为False
574 #bool(对象)可用于将对象转换为bool值
575 #七、enumerate(iterable[,startint])方法
576 #该方法可用作获取列表、元组或者字典等元素的值与其对应的位置(或者索引),默认从0开始,也可以指定
577 #li = ['a','b','c','d','e']
578 #for i,v in enumerate(li,1):
579 #print(i,v)