Python/sorts/topological_sort.py
collection
[5, 9, 10, 3, -4, 5, 178, 92, 46, -18, 0, 7]
def __assert_sorted(collection):
if collection != sorted(collection):
raise ValueError(‘Collection must be ascending sorted’)
return 1
s=__assert_sorted(collection)
Traceback (most recent call last):
File “<pyshell#25>”, line 1, in
s=__assert_sorted(collection)
File “<pyshell#24>”, line 3, in __assert_sorted
raise ValueError(‘Collection must be ascending sorted’)
ValueError: Collection must be ascending sorteddef __assert_sorted(collection):
if False:
raise ValueError(‘Collection must be ascending sorted’)
return 1
s=__assert_sorted(collection)
s
1def __assert_sorted(collection):
if True:
raise ValueError(‘Collection must be ascending sorted’)
return 1
s=__assert_sorted(collection)
Traceback (most recent call last):
File “<pyshell#32>”, line 1, in
s=__assert_sorted(collection)
File “<pyshell#31>”, line 3, in __assert_sorted
raise ValueError(‘Collection must be ascending sorted’)
ValueError: Collection must be ascending sorteds
1
Python/searches/jump_search.py
#return 一般用在函数里面的,用在循环里面会报错
for index,item in enumerate(sequence):
if item==target:
return index
SyntaxError: ‘return’ outside function
for index,item in enumerate(sequence):
if item==target:
print(index)
6
def linear_search(sequence, target):
for index,item in enumerate(sequence):
if item==target:
return index
return None
s=linear_search(sequence, target)
s
6
Python/searches/tabu_search.py
for n in collection[1:-1]:
print(n)
9
10
3
-4
5
178
92
46
collection
[5, 9, 10, 3, -4, 5, 178, 92, 46, -18]
Python/project_euler/
def signature(word):
return ‘’.join(sorted(word))
s=signature(“s”)
s
‘s’s=signature([“s”,“b”,“c”])
s
‘bcs’
Python/other/anagrams.py
list(1,2,3)
Traceback (most recent call last):
File “<pyshell#0>”, line 1, in
list(1,2,3)
TypeError: list() takes at most 1 argument (3 given)sorted(list(set(“A”,“B”,“k”)))
Traceback (most recent call last):
File “<pyshell#3>”, line 1, in
sorted(list(set(“A”,“B”,“k”)))
TypeError: set expected at most 1 arguments, got 3sorted(list(set(“Ang”)))
[‘A’, ‘g’, ‘n’]set(“Ang”)
{‘A’, ‘n’, ‘g’}
list(‘A’, ‘n’, ‘g’)
Traceback (most recent call last):
File “<pyshell#6>”, line 1, in
list(‘A’, ‘n’, ‘g’)
TypeError: list() takes at most 1 argument (3 given)list({‘A’, ‘n’, ‘g’})
[‘A’, ‘n’, ‘g’]
dir(list)
[‘add’, ‘class’, ‘contains’, ‘delattr’, ‘delitem’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘getitem’, ‘gt’, ‘hash’, ‘iadd’, ‘imul’, ‘init’, ‘init_subclass’, ‘iter’, ‘le’, ‘len’, ‘lt’, ‘mul’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘reversed’, ‘rmul’, ‘setattr’, ‘setitem’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘append’, ‘clear’, ‘copy’, ‘count’, ‘extend’, ‘index’, ‘insert’, ‘pop’, ‘remove’, ‘reverse’, ‘sort’]
####list是uncalltable对象但是可以这样用来转换
list({‘A’, ‘n’, ‘g’})
[‘A’, ‘n’, ‘g’]list([1,2,3,4])
[1, 2, 3, 4]
round(9.8785876767)
10
Python/other/binary_exponentiation.py
&与
=右移赋值
b=9
b >>= 1
b
4b >>= 1
b
2b >>= 1
b
1b >>= 1
b
0b=30
b >>= 1
b
15b >>= 1
b
7
path=os.path.split(“C:/Users/Administer/Desktop/test1.fa”)
path[0]
‘C:/Users/Administer/Desktop’path[1]
‘test1.fa’
englishWords = {}
with open(path[0] + ‘/test2.fq’) as dictionaryFile:
for word in dictionaryFile.read().split(’\n’):
englishWords[word] = None
englishWords
{’@NM_0112835 gene=Rp1 CDS=128-6412’: None, ‘AATAAATCCAAAGACATTTGTTTACGTGAAACAAGCAGGTTGCATATCCAGTGACGTTTATACAGACCAC’: None, ‘ACAAACTATTTACTCTTTTCTTCGTAAGGAAAGGTTCAACTTCTGGTCTCACCCAAAATGAGTGACACAC’: None, ‘CTTCTACTAGTTTCTCCATGATTCATCTGACTTCTGAAGGTCAAGTTCCTTCCCCTCGCCATTCAAATAT’: None, ‘@NM_0112888 gene=Rp1 CDS=128-6412’: None, ‘CACTCATCCTGTAGTGGCTAAACGCATCAGTTTCTATAAGAGTGGAGACCCACAGTTTGGCGGCGTTCGG’: None, ‘GTGGTGGTCAACCCTCGTTCCTTTAAGACTTTTGACGCTCTGCTGGACAGTTTATCCAGGAAGGTACCCC’: None, ‘TGCCCTTTGGGGTAAGGAACATCAGCACGCCCCGTGGACGACACAGCATCACCAGGCTGGAGGAGCTAGA’: None, ‘@NM_01128777 gene=Rp1 CDS=128-6412’: None, ‘GGACGGCAAGTCTTATGTGTGCTCCCACAATAAGAAGGTGCTGCCAGTTGACCTGGACAAGGCCCGCAGG’: None, ‘CGCCCTCGGCCCTGGCTGAGTAGTCGCTCCATAAGCACGCATGTGCAGCTCTGTCCTGCAACTGCCAATA’: None, ‘TGTCCACCATGGCACCTGGCATGCTCCGTGCCCCAAGGAGGCTCGTGGTCTTCCGGAATGGTGACCCGAA’: None, ‘@HWI-ST1223:80:D1FMTACXX:2:1101:1243:2213 1:N:0:AGTCAA’: None, ‘TCTGTGTAGCCNTGGCTGTCCTGGAACTCACTTTGTAGACCAGGCTGGCATGCACCACCACNNNCGGCTCATTTGTCTTTNNTTTTTGTTTTGTTCTGTA’: None, ‘+’: None, ‘BCCFFFFFFHH#4AFHIJJJJJJJJJJJJJJJJJIJIJJJJJGHIJJJJJJJJJJJJJIIJ###–5ABECFFDDEEEEE##,5=@B8?CDDC:@>’: None, ‘@HWI-ST1223:80:D1FMTACXX:2:1101:1375:2060 1:N:0:AGTCAA’: None, ‘NTGCTGAGCCACGACAAGGATCCCAGAGGGCCNAGCCCTGCATCTTGTATGGACCAGTTACNCATCAAAAGAGACTACTGTAGGCACCATCAATCAGATC’: None, ‘#1:DDDD;?CFFHDFEEIGIIIIIIG;DHFGG#)0?BFBDHBFF<FCFEFD;@DD@A=7?E#,;=(>3;=;;C>ACCC@CCCCCBBBCCAACCCCCCC’: None, ‘@HWI-ST1223:80:D1FMTACXX:2:1101:1383:2091 1:N:0:AGTCAA’: None, ‘NGTTCGTGTGGAACCTGGCGCTAAACCATTCGTAGACGACCTGCTTCTGGGTCGGGGTTTCGTACGTAGCAGAGCAGCTCCCTCGCTGCGATCTATTGAA’: None, ‘#1=DDFDFHHHHHJGJJJJJJJJJJJJJJJIJIGDHIHIGIJJJJJJJIIIGHHFDD3>BDDBDDDDDDDDDDBDCCBDDDDDDDDDDDBBDDDDEEACD’: None, ‘@HWI-ST1223:80:D1FMTACXX:2:1101:1452:2138 1:N:0:AGTCAA’: None, ‘NTCTAGGAGGTCTAGAAAGCCCAGGCCACCGGTACAAACATCAAGGGTGTTACGGATGTGCCGCTCTGAACCTCCAGGACGACTTTGATTTCAACTACAA’: None, ‘#4=DFFEFHHHHHJJJJJIJJJJHIIJGJJJJ@GIIJJJJJJIJJJJFGHIIIJJHHHDFFFFDDDDDDDDDDDDCDDDDDDDDDDDCCCEDEDDDDDDD’: None, ‘@errrr’: None, ‘>NM_01gggggggjjjj gene=Rp1 CDS=128-6412’: None, ‘’: None}
lettersOnly=[“q”,“f”,“g”,“s”]
‘’.join(lettersOnly)
‘qfgs’‘qfgs’.upper()
‘QFGS’‘QFGS’.split()
[‘QFGS’]
Python/other/finding_Primes.py
sieve = [False if i <2 else True for i in range(5+1)]
sieve
[False, False, True, True, True, True]
#对字典dict进行操作
letterCount
{‘A’: 0, ‘B’: 0, ‘C’: 0, ‘D’: 0, ‘E’: 0, ‘F’: 0, ‘G’: 0, ‘H’: 0, ‘I’: 0, ‘J’: 0, ‘K’: 0, ‘L’: 0, ‘M’: 0, ‘N’: 0, ‘O’: 0, ‘P’: 0, ‘Q’: 0, ‘R’: 0, ‘S’: 0, ‘T’: 0, ‘U’: 0, ‘V’: 0, ‘W’: 0, ‘X’: 0, ‘Y’: 0, ‘Z’: 0}letterCount[‘A’] += 1
letterCount
{‘A’: 1, ‘B’: 0, ‘C’: 0, ‘D’: 0, ‘E’: 0, ‘F’: 0, ‘G’: 0, ‘H’: 0, ‘I’: 0, ‘J’: 0, ‘K’: 0, ‘L’: 0, ‘M’: 0, ‘N’: 0, ‘O’: 0, ‘P’: 0, ‘Q’: 0, ‘R’: 0, ‘S’: 0, ‘T’: 0, ‘U’: 0, ‘V’: 0, ‘W’: 0, ‘X’: 0, ‘Y’: 0, ‘Z’: 0}
freqToLetter[2] = [‘A’]
freqToLetter
{2: [‘A’]}freqToLetter[0] = [“B”]
freqToLetter
{2: [‘A’], 0: [‘B’]}
##在dict中使用append是已经存在的key才可以用append方法
letter=“E”
freqToLetter[letterToFreq[letter]].append(letter)
freqToLetter
{2: [‘A’], 0: [‘B’, ‘E’]}freqToLetter[0].append(“K”)
freqToLetter
{2: [‘A’], 0: [‘B’, ‘E’, ‘K’]}freqToLetter[9].append(“HH”)
Traceback (most recent call last):
File “<pyshell#198>”, line 1, in
freqToLetter[9].append(“HH”)
KeyError: 9
for freq in freqToLetter:
print(freq)
2
0
freqToLetter[2] = ‘’.join(freqToLetter[2])
freqToLetter[0] = ‘’.join(freqToLetter[0])
freqToLetter
{2: ‘A’, 0: ‘BEK’}
sort 和 lambda
我们需要将一些string
按字符长排序words = [‘foo’, ‘card’, ‘bar’, ‘aaaa’, ‘abab’]
words.sort(key = lambda x : len(x))
按字符不同字母数量排序words = [‘foo’, ‘card’, ‘bar’, ‘aaaa’, ‘abab’]
words.sort(key = lambda x : len(set(x)))
freqToLetter={2: [‘A’], 0: [‘B’, ‘E’, ‘K’]}
ETAOIN = ‘996’
freqToLetter[0].sort(key = ETAOIN.find, reverse = True)
freqToLetter
{2: [‘A’], 0: [‘B’, ‘E’, ‘K’]}ETAOIN = ‘ETAOINSHRDLCUMWFGYPBVKJXQZ’
freqToLetter[0].sort(key = ETAOIN.find, reverse = True)
freqToLetter
{2: [‘A’], 0: [‘K’, ‘B’, ‘E’]}ETAOIN = ‘BETAOINSHRDLCUMWFGYPBVKJXQZ’
freqToLetter[0].sort(key = ETAOIN.find, reverse = True)
freqToLetter
{2: [‘A’], 0: [‘K’, ‘E’, ‘B’]}ETAOIN = ‘KBETAOINSHRDLCUMWFGYPBVKJXQZ’
freqToLetter[0].sort(key = ETAOIN.find, reverse = True)
freqToLetter
{2: [‘A’], 0: [‘E’, ‘B’, ‘K’]}
freqToLetter={2: ‘A’, 0: ‘BEK’}
list(freqToLetter.items())
[(2, ‘A’), (0, ‘BEK’)]
freqToLetter={2: ‘A’, 0: ‘BEK’}
list(freqToLetter.items())
[(2, ‘A’), (0, ‘BEK’)]freqPairs = list(freqToLetter.items())
freqOrder = []
for freqPair in freqPairs:
print(freqPair)
(2, ‘A’)
(0, ‘BEK’)
freqPair[1]
‘BEK’freqOrder.append(‘A’)
freqOrder.append(‘BEK’)
freqOrder
[‘A’, ‘BEK’]‘’.join(freqOrder)
‘ABEK’
Python/other/game_of_life.py
canvas=[[False, False, False, False, False], [True, True, False, True, False], [True, True, False, True, False], [True, False, False, True, True], [True, False, False, False, False]]
canvas = np.array(canvas)
canvas
array([[False, False, False, False, False],
[ True, True, False, True, False],
[ True, True, False, True, False],
[ True, False, False, True, True],
[ True, False, False, False, False]])canvas[0:3,1:4]
array([[False, False, False],
[ True, False, True],
[ True, False, True]])
Python/other/nested_brackets.py
from string import ascii_letters, digits, punctuation
chars = tuple(ascii_letters) + tuple(digits) + tuple(punctuation)
chars
(‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’, ‘k’, ‘l’, ‘m’, ‘n’, ‘o’, ‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’, ‘z’, ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’, ‘M’, ‘N’, ‘O’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘Z’, ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘!’, ‘"’, ‘#’, ‘$’, ‘%’, ‘&’, “’”, ‘(’, ‘)’, ‘*’, ‘+’, ‘,’, ‘-’, ‘.’, ‘/’, ‘:’, ‘;’, ‘<’, ‘=’, ‘>’, ‘?’, ‘@’, ‘[’, ‘\’, ‘]’, ‘^’, ‘_’, ‘`’, ‘{’, ‘|’, ‘}’, ‘~’)‘’.join(chars)
‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&’()*+,-./:;<=>?@[\]^_`{|}~’
Python/other/primelib.py
graph = [[0, 16, 13, 0, 0, 0],
[0, 0, 10 ,12, 0, 0],
[0, 4, 0, 0, 14, 0],
[0, 0, 9, 0, 0, 20],
[0, 0, 0, 7, 0, 4],
[0, 0, 0, 0, 0, 0]]
[i[:] for i in graph]
[[0, 16, 13, 0, 0, 0], [0, 0, 10, 12, 0, 0], [0, 4, 0, 0, 14, 0], [0, 0, 9, 0, 0, 20], [0, 0, 0, 7, 0, 4], [0, 0, 0, 0, 0, 0]]
Python/searches/binary_search.py
如果try语句后面的代码没有报错,那么except语句就没有起作用。相反try语句报错,将执行except语句后面的代码。
try-except语句支持多个except语句。
def __assert_sorted(collection):
if collection != sorted(collection):
raise ValueError(‘Collection must be ascending sorted’)
print(“aa”)
__assert_sorted(collection)
Traceback (most recent call last):
File “<pyshell#160>”, line 1, in
__assert_sorted(collection)
File “<pyshell#157>”, line 15, in __assert_sorted
raise ValueError(‘Collection must be ascending sorted’)
ValueError: Collection must be ascending sorted
s= __assert_sorted(collection)
Traceback (most recent call last):
File “<pyshell#171>”, line 1, in
s= __assert_sorted(collection)
File “<pyshell#157>”, line 15, in __assert_sorted
raise ValueError(‘Collection must be ascending sorted’)
ValueError: Collection must be ascending sorted
####可以看出抛出错误后不再执行后面的语句print(“aa”“)collection=sorted(collection)
s= __assert_sorted(collection)
aa
####没有报错才执行后面的语句try:
__assert_sorted(collection)
except ValueError:
sys.exit(‘Sequence must be ascending sorted to apply binary search’)
###sys.exit没有反应
#改为print形式
try:
__assert_sorted(collection)
except ValueError:
print(‘Sequence must be ascending sorted to apply binary search’)
Sequence must be ascending sorted to apply binary search
#成功
def fetcher(obj, index):
return obj[index]
x=“sdfd”
try:
fetcher(x,9)
except IndexError:
print(‘got exception’)
got exception
target
5result
[1]if result is not None:
print(’{} found at positions: {}’.format(target, result))
else:
print(‘Not found’)
5 found at positions: [1]
Python/searches/interpolation_search.py