习题练习(二)
1、现有列表alist = [3,1,-4,2,-6] 按照元素的绝对值大小进行排序
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM9AnYldnJwAzN9c3Pml2Zu0GbyoVdzJTW2hXbRtmVHRmaG12YwUjMiRUO5NWe5cEZo50VhtWNXNlb1cVY1x2RiBjVzQldwIjYqVTej5WOHJWa1ITW11EWa5mRXJGc5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.gif)
alist = [3,1,-4,2,-6]
ret=sorted(alist,key=lambda x:abs(x))
print(ret)
View Code
2、5.输入某年某月某日,判断是这一年中的第几天?(用内置模块实现)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM9AnYldnJwAzN9c3Pml2Zu0GbyoVdzJTW2hXbRtmVHRmaG12YwUjMiRUO5NWe5cEZo50VhtWNXNlb1cVY1x2RiBjVzQldwIjYqVTej5WOHJWa1ITW11EWa5mRXJGc5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.gif)
import time
input_ = input('请输入年月日:')
time_local = time.strptime(input_,'%Y-%m-%d %X')
print(time_local.tm_yday) # 结构化时间调用里面的参数
View Code
3、一行代码实现[1,4,9,16,25,36,49,64,81,100]
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM9AnYldnJwAzN9c3Pml2Zu0GbyoVdzJTW2hXbRtmVHRmaG12YwUjMiRUO5NWe5cEZo50VhtWNXNlb1cVY1x2RiBjVzQldwIjYqVTej5WOHJWa1ITW11EWa5mRXJGc5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.gif)
print(list(map(lambda x: x**2,range(1,11))))
View Code
4、从0-99这个100个数中随机取出10个不重复的数
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM9AnYldnJwAzN9c3Pml2Zu0GbyoVdzJTW2hXbRtmVHRmaG12YwUjMiRUO5NWe5cEZo50VhtWNXNlb1cVY1x2RiBjVzQldwIjYqVTej5WOHJWa1ITW11EWa5mRXJGc5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.gif)
import random
print(list(random.sample(list(range(0,100)),10)))
View Code
5、一行代码,通过filter和lambda函数输出以下列表索引为基数对应的元素
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM9AnYldnJwAzN9c3Pml2Zu0GbyoVdzJTW2hXbRtmVHRmaG12YwUjMiRUO5NWe5cEZo50VhtWNXNlb1cVY1x2RiBjVzQldwIjYqVTej5WOHJWa1ITW11EWa5mRXJGc5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.gif)
lis = [12,13,14,151,5,16,17,117,133,144,177]
print(list(filter(lambda x:lis.index(x)%2!=0,lis)))
View Code
6、将下列数据转成想要的结果,尽量用简洁的方式实现:
原数据lst =[[1,2,3],[4,5,6],[7,8,9]]
转换后 li = [1,2,3,4,5,6,7,8,9]
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM9AnYldnJwAzN9c3Pml2Zu0GbyoVdzJTW2hXbRtmVHRmaG12YwUjMiRUO5NWe5cEZo50VhtWNXNlb1cVY1x2RiBjVzQldwIjYqVTej5WOHJWa1ITW11EWa5mRXJGc5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.gif)
lst =[[1,2,3],[4,5,6],[7,8,9]]
li = [x for i in lst for x in i]
print(li)
View Code
7、实现一个装饰器,通过调用一次装饰器使被装饰的函数调用5次
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM9AnYldnJwAzN9c3Pml2Zu0GbyoVdzJTW2hXbRtmVHRmaG12YwUjMiRUO5NWe5cEZo50VhtWNXNlb1cVY1x2RiBjVzQldwIjYqVTej5WOHJWa1ITW11EWa5mRXJGc5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.gif)
def warpper(f):
def inner(arg):
for i in range(5):
f(arg)
arg += 1
return inner
@warpper
def fun(num):
print('我被执行了%s次了'%num)
fun(1)
View Code
8、将列表内的元素,根据位数被合并成字典(升级题)lst = [1,2,3,4,12,13,14,123,124,125,1234,1235,1236,1237,12345,12346,12347]
变成
{
1:[1,2,3,4],
2:[12,13,14],
3:[123,124,125],
4:[1234,1235,1236,1237],
5:[12345,12346,12347]
}
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM9AnYldnJwAzN9c3Pml2Zu0GbyoVdzJTW2hXbRtmVHRmaG12YwUjMiRUO5NWe5cEZo50VhtWNXNlb1cVY1x2RiBjVzQldwIjYqVTej5WOHJWa1ITW11EWa5mRXJGc5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.gif)
from collections import defaultdict
d = defaultdict(list) # 这里里面的参数可以是任何可变数据类型,可以不断往里面加值
for i in lst:
d[len(str(i))].append(i) # 不断地给相应的加值
d = dict(d) # 会根据最终值工厂化这个字典
print(d)
View Code
9、12.输入一个不是空的字符串,判断这个字符串是不是由一个子字符重复多次组成,字符只包含小写字母,且长度不超过1000(升级题)
示例一:
输入:"abab"
这种就输出True,因为输入的是ab重复组成的字符串
示例二:
输入:"abcabcabc"
这种就输出True,因为输入的是abc重复组成的字符串
示例三:
输入:"abcdabcd"
这种就输出True,因为输入的是abcd重复组成的字符串
示例四:
输入:'abc"
这种就输出False,因为输入的没有重复组成字符串
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM9AnYldnJwAzN9c3Pml2Zu0GbyoVdzJTW2hXbRtmVHRmaG12YwUjMiRUO5NWe5cEZo50VhtWNXNlb1cVY1x2RiBjVzQldwIjYqVTej5WOHJWa1ITW11EWa5mRXJGc5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.gif)
法一 :
def func():
cont = input('请输入字符串:').strip()
for i in range(1,len(cont)-1):
for j in range(i,len(cont),i):
if cont[0:0+i]==cont[j:j+i]:continue # 迭代比较
elif cont.replace(cont[0],'') =='':continue # 排除单个字母重复奇数次
else:break
else:return True
else:return False
print(func())
法一:
s = input("请输入一个只包含小写字母组成的字符串:").strip()
l=len(s)
for i in range(l//2):
j=l//(i+1)
if s[0:i+1]*j==s:
print(True)
break
else:
print(False)
View Code
10、 求结果 v = [lambda :x for x in range(10)]
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM9AnYldnJwAzN9c3Pml2Zu0GbyoVdzJTW2hXbRtmVHRmaG12YwUjMiRUO5NWe5cEZo50VhtWNXNlb1cVY1x2RiBjVzQldwIjYqVTej5WOHJWa1ITW11EWa5mRXJGc5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.gif)
print(v) #[<function <listcomp>.<lambda> at 0x02EE2F60>, ……
print(v[0]) #<function <listcomp>.<lambda> at 0x02EE2F60>
print(v[5]()) #9 全是9,应为最后一个x为9,所有的函数执行时都引用一个9的内存
View Code
11、求结果v = (lambda :x for x in range(10))
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM9AnYldnJwAzN9c3Pml2Zu0GbyoVdzJTW2hXbRtmVHRmaG12YwUjMiRUO5NWe5cEZo50VhtWNXNlb1cVY1x2RiBjVzQldwIjYqVTej5WOHJWa1ITW11EWa5mRXJGc5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.gif)
print(v) #一个生成器地址 <generator object <genexpr> at 0x0382E870>
print(v[0]) # 注意生成器没有索引 TypeError: 'generator' object is not subscriptable
print(v[0]()) # 生成器只能send或则next调用 TypeError: 'generator' object is not subscriptable
print(next(v)) #一内存地址 <function <genexpr>.<lambda> at 0x03182F60>
print(next(v)()) #1
View Code
12、有两个字符串列表,a和b,每个字符是由逗号分隔的一些字符,(升级题)尽量做得支持扩展
a = [
'a,1',
'b,3,22',
'c,3,4',
'f,5',
]
b=[
'a,2,1',
'b,4',
'd,2',
'e,12',
'g,12,43',
'a,4354,6'
]
按每个字符串的第一个值,合并a和b到c
c = [
'a,1,2',
'b,3,22,4',
'c,3,4',
'd,2',
'e,12',
'f,5'
]
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM9AnYldnJwAzN9c3Pml2Zu0GbyoVdzJTW2hXbRtmVHRmaG12YwUjMiRUO5NWe5cEZo50VhtWNXNlb1cVY1x2RiBjVzQldwIjYqVTej5WOHJWa1ITW11EWa5mRXJGc5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.gif)
法1:
c=[]
for i in a:
flag = False
removes = None
i = i.strip()
li=[i[0],i[2:],]
for v in b:
v=v.strip()
if i[0]==v[0]:
li.append(v[2:])
flag,removes=True,v
break
print(li)
c.append(','.join(li))
if flag:
b.remove(removes)
else:
c.extend(b)
print(c)
法2:
g = { i[0]:i for i in a}
for i in b:
if i[0] in g:
g[i[0]]=g[i[0]][2:]+i[1:]
else:
g[i[0]]=i
print(list(g.values()))
View Code
posted on 2019-03-20 22:25 独角兕大王 阅读(...) 评论(...) 编辑 收藏