1. 产生200个1000以内的随机数
>>> L1=[random.randrange(1,1000) for _ in range(200)] >>> type(L1) <class 'list'> >>> for i,L in enumerate(L1): if (i+1)%10: print(L,end='\t') else: print(L) 842 566 188 863 569 79 91 585 133 866 943 636 359 166 648 615 61 239 144 758 196 61 795 980 255 147 796 158 110 440 51 214 359 85 420 570 725 367 408 368 660 926 465 373 143 440 628 235 261 535 110 422 119 964 9 825 324 556 860 292 911 399 728 877 42 177 947 382 695 225 816 591 458 837 452 627 421 694 5 425 834 374 728 558 831 596 784 548 462 359 219 714 285 883 183 321 514 522 700 628 919 175 776 508 240 94 779 365 12 961 858 835 801 239 359 77 311 930 783 935 248 394 689 959 373 561 252 342 33 712 633 802 236 934 262 358 797 932 432 704 499 962 73 766 21 956 673 690 833 848 758 908 854 811 68 961 640 103 363 693 499 381 377 390 202 187 16 119 441 103 507 77 60 534 342 396 809 411 273 726 619 911 645 21 550 879 587 119 964 956 461 572 993 405 651 71 102 101 640 259 >>>
2. 在上述列表L1中,找出3的倍数或包含3的数字
>>> L2 = [i for i in L1 if i%3==0 or '3' in str(i)] >>> type(L2) <class 'list'> >>> for i,L in enumerate(L2): if (i+1)%10: print(L,end='\t') else: print(L) 863 585 133 943 636 359 648 615 239 144 795 255 147 51 359 420 570 367 408 368 660 465 373 143 235 261 535 9 825 324 399 42 177 382 225 816 591 837 627 834 374 558 831 462 359 219 714 285 883 183 321 522 240 365 12 858 835 801 239 359 311 930 783 935 394 373 561 252 342 33 633 236 934 358 932 432 73 21 673 690 833 103 363 693 381 377 390 441 103 507 60 534 342 396 411 273 726 645 21 879 993 405 651 102 >>>
3. 把上述列表L2去掉重复数字,并升序输出
>>> L3=[i for i in sorted(set(L2))] >>> type(L3) <class 'list'> >>> for i,L in enumerate(L3): if (i+1)%10: print(L,end='\t') else: print(L) 9 12 21 33 42 51 60 73 102 103 133 143 144 147 177 183 219 225 235 236 239 240 252 255 261 273 285 311 321 324 342 358 359 363 365 367 368 373 374 377 381 382 390 394 396 399 405 408 411 420 432 441 462 465 507 522 534 535 558 561 570 585 591 615 627 633 636 645 648 651 660 673 690 693 714 726 783 795 801 816 825 831 833 834 835 837 858 863 879 883 930 932 934 935 943 993 >>> >>> min(L3),max(L3) (9, 993) >>>
4. 用阿拉伯数字替换中文序号
>>> L4=['第一讲.pdf', '第七讲.pdf', '第三讲.pdf', '第二讲.pdf', '第五讲.pdf', '第六讲.pdf', '第四讲.pdf'] >>> L4 ['第一讲.pdf', '第七讲.pdf', '第三讲.pdf', '第二讲.pdf', '第五讲.pdf', '第六讲.pdf', '第四讲.pdf'] >>> L4=[i.replace(i[1],str('一二三四五六七八九'.index(i[1])+1)) for i in L4] >>> L4 ['第1讲.pdf', '第7讲.pdf', '第3讲.pdf', '第2讲.pdf', '第5讲.pdf', '第6讲.pdf', '第4讲.pdf'] >>> >>> [i for i in sorted(L4)] ['第1讲.pdf', '第2讲.pdf', '第3讲.pdf', '第4讲.pdf', '第5讲.pdf', '第6讲.pdf', '第7讲.pdf'] >>> >>> D1={i+1:L for i,L in enumerate(sorted(L4))} >>> D1 {1: '第1讲.pdf', 2: '第2讲.pdf', 3: '第3讲.pdf', 4: '第4讲.pdf', 5: '第5讲.pdf', 6: '第6讲.pdf', 7: '第7讲.pdf'} >>>
5. 遍历指定文件夹下的某一种后缀的文件
>>> import os >>> docPath='C:\\Users\\Administrator\\Desktop\\查询结果' >>> [fn[:-5] for fn in [files for path,dirs,files in os.walk(docPath)][0] if fn[-5:]=='.xlsx'] ['322986441', '322986442', '322986443', '322986444', '322986445'] >>>
6. 分离英文单词列表中的中英文
>>> words=''' cat 猫 dog 狗 pig 猪 duck 鸭 rabbit 兔 horse 马 elephant 大象 ant 蚂蚁 fish 鱼 bird 鸟 eagle 鹰 beaver 海狸 snake 蛇 mouse 老鼠 squirrel 松鼠 kangaroo 袋鼠 monkey 猴 panda 熊猫 bear 熊 lion 狮子 tiger 老虎 fox 狐狸 zebra 斑马 deer 鹿 giraffe 长颈鹿 goosr 鹅 hen 母鸡 turkey 火鸡 lamb 小羊 sheep 绵羊 goat 山羊 cow 奶牛 donkey 驴 squid 鱿鱼 lobster 龙虾 shark 鲨鱼 seal 海豹 ''' >>> CN=[i for i in words.split() if '\u4e00' <= i <= '\u9fff'] >>> EN=[i for i in words.split() if not '\u4e00' <= i <= '\u9fff'] >>> >>> CN ['猫', '狗', '猪', '鸭', '兔', '马', '大象', '蚂蚁', '鱼', '鸟', '鹰', '海狸', '蛇', '老鼠', '松鼠', '袋鼠', '猴', '熊猫', '熊', '狮子', '老虎', '狐狸', '斑马', '鹿', '长颈鹿', '鹅', '母鸡', '火鸡', '小羊', '绵羊', '山羊', '奶牛', '驴', '鱿鱼', '龙虾', '鲨鱼', '海豹'] >>> EN ['cat', 'dog', 'pig', 'duck', 'rabbit', 'horse', 'elephant', 'ant', 'fish', 'bird', 'eagle', 'beaver', 'snake', 'mouse', 'squirrel', 'kangaroo', 'monkey', 'panda', 'bear', 'lion', 'tiger', 'fox', 'zebra', 'deer', 'giraffe', 'goosr', 'hen', 'turkey', 'lamb', 'sheep', 'goat', 'cow', 'donkey', 'squid', 'lobster', 'shark', 'seal'] >>>
7. 把上述EN列表中单词分成单元音、双元音和多元音三类
>>> EN1=[i for i in EN if i.count('a')+i.count('e')+i.count('i')+i.count('o')+i.count('u')==1] >>> EN2=[i for i in EN if i.count('a')+i.count('e')+i.count('i')+i.count('o')+i.count('u')==2] >>> EN3=[i for i in EN if i.count('a')+i.count('e')+i.count('i')+i.count('o')+i.count('u')>2] >>> >>> EN1 ['cat', 'dog', 'pig', 'duck', 'ant', 'fish', 'bird', 'fox', 'hen', 'lamb', 'cow', 'shark'] >>> EN2 ['rabbit', 'horse', 'snake', 'monkey', 'panda', 'bear', 'lion', 'tiger', 'zebra', 'deer', 'goosr', 'turkey', 'sheep', 'goat', 'donkey', 'squid', 'lobster', 'seal'] >>> EN3 ['elephant', 'eagle', 'beaver', 'mouse', 'squirrel', 'kangaroo', 'giraffe'] >>>
8. 找出单词(包含2个或2个以上字母e)的中文意思
方法一:
>>> CN1 = [[EN,CN][1][[EN,CN][0].index(i)] for i in [EN,CN][0] if i.count('e') > 1] >>> CN1 ['大象', '鹰', '海狸', '鹿', '绵羊']
方法二:
1. >>> CN2 = [i.split(' ')[1] for i in [' '.join(i) for i in zip(EN, CN)] if i.count('e') > 1] 2. >>> CN2 3. ['大象', '鹰', '海狸', '鹿', '绵羊'] 4. >>>
两者的区别在于:
>>> [EN,CN] [['cat', 'dog', 'pig', 'duck', 'rabbit', 'horse', 'elephant', 'ant', 'fish', 'bird', 'eagle', 'beaver', 'snake', 'mouse', 'squirrel', 'kangaroo', 'monkey', 'panda', 'bear', 'lion', 'tiger', 'fox', 'zebra', 'deer', 'giraffe', 'goosr', 'hen', 'turkey', 'lamb', 'sheep', 'goat', 'cow', 'donkey', 'squid', 'lobster', 'shark', 'seal'], ['猫', '狗', '猪', '鸭', '兔', '马', '大象', '蚂蚁', '鱼', '鸟', '鹰', '海狸', '蛇', '老鼠', '松鼠', '袋鼠', '猴', '熊猫', '熊', '狮子', '老虎', '狐狸', '斑马', '鹿', '长颈鹿', '鹅', '母鸡', '火鸡', '小羊', '绵羊', '山羊', '奶牛', '驴', '鱿鱼', '龙虾', '鲨鱼', '海豹']] >>> zip(EN,CN) <zip object at 0x02E384E8> >>> list(zip(EN,CN)) [('cat', '猫'), ('dog', '狗'), ('pig', '猪'), ('duck', '鸭'), ('rabbit', '兔'), ('horse', '马'), ('elephant', '大象'), ('ant', '蚂蚁'), ('fish', '鱼'), ('bird', '鸟'), ('eagle', '鹰'), ('beaver', '海狸'), ('snake', '蛇'), ('mouse', '老鼠'), ('squirrel', '松鼠'), ('kangaroo', '袋鼠'), ('monkey', '猴'), ('panda', '熊猫'), ('bear', '熊'), ('lion', '狮子'), ('tiger', '老虎'), ('fox', '狐狸'), ('zebra', '斑马'), ('deer', '鹿'), ('giraffe', '长颈鹿'), ('goosr', '鹅'), ('hen', '母鸡'), ('turkey', '火鸡'), ('lamb', '小羊'), ('sheep', '绵羊'), ('goat', '山羊'), ('cow', '奶牛'), ('donkey', '驴'), ('squid', '鱿鱼'), ('lobster', '龙虾'), ('shark', '鲨鱼'), ('seal', '海豹')] >>>
注:方法二中推导式嵌套,内外层的变量 i 互不干涉(要求版本python3+)。
方法三:先用字典推导式建一个字典,再从字典里遍历出结果
>>> dic={e:CN[i] for i,e in enumerate(EN)} >>> [cn for en,cn in dic.items() if en.count('e')>1] ['大象', '鹰', '海狸', '鹿', '绵羊'] >>> #合并成一行: >>> [cn for en,cn in {e:CN[i] for i,e in enumerate(EN)}.items() if en.count('e')>1] ['大象', '鹰', '海狸', '鹿', '绵羊'] >>> >>> #或者: >>> [dic[i] for i in dic.keys() if i.count('e')>1] ['大象', '鹰', '海狸', '鹿', '绵羊'] >>> [dic.get(i) for i in dic.keys() if i.count('e')>1] ['大象', '鹰', '海狸', '鹿', '绵羊'] >>> #合并成一行: >>> [{e:CN[i] for i,e in enumerate(EN)}[i] for i in {e:CN[i] for i,e in enumerate(EN)}.keys() if i.count('e')>1] ['大象', '鹰', '海狸', '鹿', '绵羊'] >>> >>> #字典的值: >>> dic {'cat': '猫', 'dog': '狗', 'pig': '猪', 'duck': '鸭', 'rabbit': '兔', 'horse': '马', 'elephant': '大象', 'ant': '蚂蚁', 'fish': '鱼', 'bird': '鸟', 'eagle': '鹰', 'beaver': '海狸', 'snake': '蛇', 'mouse': '老鼠', 'squirrel': '松鼠', 'kangaroo': '袋鼠', 'monkey': '猴', 'panda': '熊猫', 'bear': '熊', 'lion': '狮子', 'tiger': '老虎', 'fox': '狐狸', 'zebra': '斑马', 'deer': '鹿', 'giraffe': '长颈鹿', 'goosr': '鹅', 'hen': '母鸡', 'turkey': '火鸡', 'lamb': '小羊', 'sheep': '绵羊', 'goat': '山羊', 'cow': '奶牛', 'donkey': '驴', 'squid': '鱿鱼', 'lobster': '龙虾', 'shark': '鲨鱼', 'seal': '海豹'}
9. 单循环赛对阵表,场数=队数*(队数-1)/2
>>> teams=[chr(i+65) for i in range(6)] >>> games=[i+'-'+j for i in teams for j in teams if i<j] >>> teams ['A', 'B', 'C', 'D', 'E', 'F'] >>> games ['A-B', 'A-C', 'A-D', 'A-E', 'A-F', 'B-C', 'B-D', 'B-E', 'B-F', 'C-D', 'C-E', 'C-F', 'D-E', 'D-F', 'E-F'] >>> len(games) 15 >>>
10. 一行代码找出字符串s中包含多个字母e的单词的中文意思
>>> s='''
cat 猫 dog 狗 pig 猪 duck 鸭 rabbit 兔 horse 马 elephant 大象
ant 蚂蚁 fish 鱼 bird 鸟 eagle 鹰 beaver 海狸 snake 蛇 mouse 老鼠
squirrel 松鼠 kangaroo 袋鼠 monkey 猴 panda 熊猫 bear 熊 lion 狮子
tiger 老虎 fox 狐狸 zebra 斑马 deer 鹿 giraffe 长颈鹿 goosr 鹅
hen 母鸡 turkey 火鸡 lamb 小羊 sheep 绵羊 goat 山羊 cow 奶牛
donkey 驴 squid 鱿鱼 lobster 龙虾 shark 鲨鱼 seal 海豹
'''
>>> [c for e,c in {e:[c for c in s.split() if '\u4e00'<=c<='\u9fff'][c] for c,e in enumerate([c for c in s.split() if not '\u4e00'<=c<='\u9fff'])}.items() if e.count('e')>1] ['大象', '鹰', '海狸', '鹿', '绵羊'] >>>