編寫函數,實現功能:將[1,2,[3,[4,5]],6,[7,]] 轉換成[1,2,3,4,5,6,7]html
# 方法一 li = [1,2,[3,[4,5]],6,[7,]] def func(args): lis = [] for i in args: if isinstance(i,list): lis.extend(func(i)) else: lis.append(i) return lis
# 方法二 def func(args): if isinstance(args,list): return [y for x in args for y in func(x)] else: return [args]
[1,2,[3,[4,5]],6,[7,]] 用生成器將其生成[1,2,3,4,5,6,7]python
# 方法一 li = [1,2,[3,[4,5]],6,[7,]] def func(args): for i in args: if isinstance(i,list): for j in func(i): yield j else: yield i ret = func(li) print(list(ret))
# 方法二 li = [1,2,[3,[4,5]],6,[7,]] def func(argv): for i in argv: if isinstance(i,list): yield from func(i) else: yield i ret = func(li) print(list(ret))
編寫代碼實現func函數,使其實現如下效果:
foo = func(8)
print(foo(8)) # 輸出64
print(foo(-1)) # 輸出-8web
# 方法一 def func(x): def inner(y): return x*y return inner
# 方法二 def func(x): return lambda y:x*y
import re from collections import Counter file = r'xx.log' def readweb(file): com = re.compile('http[s]?://(.*?)/') with open(file,encoding='utf-8') as f: for line in f: yield com.search(line).group(1) g = readweb(file) ret = Counter(g) for url,count in ret.most_common(): print(count,url)
經過代碼實現以下轉換:app
二進制轉換成十進制:v = 「0b1111011」函數
十進制轉換成二進制:v = 18
八進制轉換成十進制:v = 「011」
十進制轉換成八進制:v = 30
十六進制轉換成十進制:v = 「0x12」
十進制轉換成十六進制:v = 87編碼
# 二進制轉換成十進制:v = 「0b1111011」 v1 = "0b1111011" print(int(v1,2)) # 十進制轉換成二進制:v = 18 v2 = 18 print(bin(v2)) # 八進制轉換成十進制:v = 「011」 v3 = "011" print(int(v3,8)) # 十進制轉換成八進制:v = 30 v4 = 30 print(oct(v4)) # 十六進制轉換成十進制:v = 「0x12」 v5 = "0x12" print(int(v5,16)) # 十進制轉換成十六進制:v = 87 v6 = 87 print(hex(v6))
請編寫一個函數實現將IP地址轉換成一個整數。url
如 10.3.9.12 轉換規則爲:
10 00001010
3 00000011
9 00001001
12 00001100
再將以上二進制拼接起來計算十進制結果:00001010 00000011 00001001 00001100 = ?spa
ip = "10.3.9.12" def get_int(argv): ret = "".join([bin(int(i)).lstrip("0b").zfill(8) for i in argv.strip().split(".")]) return int(ret,2) print(get_int(ip))
python遞歸的最大層數?code
999
求結果:
v1 = 1 or 3
v2 = 1 and 3
v3 = 0 and 2 and 1
v4 = 0 and 2 or 1
v5 = 0 and 2 or 1 or 4
v6 = 0 or Flase and 1htm
1 3 0 1 1 False
字節碼和機器碼的區別
機器碼(machine code),學名機器語言指令,有時也被稱爲原生碼(Native Code),是電腦的CPU可直接解讀的數據。
字節碼(Bytecode)是一種包含執行程序、由一序列 op 代碼/數據對 組成的二進制文件。字節碼是一種中間碼,它比機器碼更抽象,須要直譯器轉譯後才能成爲機器碼的中間代碼。
用一行代碼實現數值交換:
a = 1
b = 2
a,b = b,a
一行代碼實現1--100之和
a = sum(range(1,101))
列表[1,2,3,4,5],請使用map()函數輸出[1,4,9,16,25],並使用列表推導式提取出大於10的數,最終輸出[16,25]
l = [1,2,3,4,5] print([i for i in map(lambda x: x * x, l) if i > 10])
python2和python3區別?列舉5個
一、Python3 使用 print 必需要以小括號包裹打印內容,好比 print('hi')
Python2 既能夠使用帶小括號的方式,也能夠使用一個空格來分隔打印內容,比 如 print 'hi'
二、python2 range(1,10)返回列表,python3中返回迭代器,節約內存
三、python2中使用ascii編碼,python中使用utf-8編碼
四、python2中unicode表示字符串序列,str表示字節序列
python3中str表示字符串序列,byte表示字節序列
五、python2中爲正常顯示中文,引入coding聲明,python3中不須要
六、python2中是raw_input()函數,python3中是input()函數