v8 = [lambda x:x*i for i in range(10)] # 新浪微博面试题
# 1.请问 v8 是什么? #V8为10个匿名函数,每个函数接收一个参数
# 2.请问 v8[0](2) 的结果是什么? #结果等于2*9 = 18
# 面试题
def num():
return [lambda x:i*x for i in range(4)]
# num() -> [函数,函数,函数,函数]
print([ m(2) for m in num() ]) # [6,6,6,6]
# ##################### 筛选 #########################
v9 = [i for i in range(10) if i > 5]
"""
1、给你一个IP地址,请将IP地址 中的每个进制数字转换成对应二进制
2、继续实现,将结果拼接起来:11000000101010000000101100010111,再将此二进制的字符串转换成10进制整数
"""
ip = "192.168.11.23"
# 方式1
def ip_switch(ip):
data_list = ip.split('.') # 转换为:列表字符串[192.168.11.23]
result = []
for item in data_list:
bin_string = bin(int(item)).replace('0b', '') # 进制转换后为字符串
if len(bin_string) % 8 == 0:
result.append(bin_string)
else:
new_bin_string = (("0" * (8 - len(bin_string))) + bin_string)
result.append(new_bin_string)
return result
# 方式2
def ip_switch2(ip):
result = []
data_list = ip.split('.')
for item in data_list:
bin_string = bin(int(item))[2:]
bin_8_string = bin_string.rjust(8, '0')
result.append(bin_8_string)
return result
# 通过列表推导式简化代码
def ip_switch3(ip):
result = ''.join([bin(int(item))[2:].rjust(8, '0') for item in ip.split('.')])
return result
def main():
ip_list = ip_switch2(ip)
str_item = ''.join(ip_list) # 将列表中的字符串通过join 进行拼接成一起
v2 = int(str_item, base=2)
print(v2)
v3 = int(ip_switch3(ip), base=2)
print(v3)
main()