Python代码练习(二):容器
七月在线课程的练习题
- 使用循环和列表推导找出单词长度大于某个数字的单词
words = [“apple”, “banana”, “orange”, “peach”,“kiwi”]
列表推导式:[表达式 for 变量 in 列表 if 条件]
#法一:
words = ["apple", "banana", "orange", "peach","kiwi"]
l=int(input())
# [x for x in words if len(x)>=l]
for x in words:
if len(x)>=l:
print(x)
#法二:
words = ["apple", "banana", "orange", "peach","kiwi"]
l=int(input())
[x for x in words if len(x)>=l]
#法三:
words=['apple','banana','orange','peach','kiwi']
def findlen(n):
bigthan=[]
for i in words:
if int(len(i))>n:
bigthan.append(i)
return bigthan
findlen(5)
- 使用列表推导式寻找两个列表中的相同元素
寻找两个列表中的相同元素
l1=[1,2,5]
l2=[6,2,7]
列表推导式:[表达式(i,j) for 变量 in 列表 for 变量 in 列表]
#法一:
l1=[1,2,5]
l2=[6,2,7]
n=0
for i in l1:
for j in l2:
if i==j:
n+=1;
print(n)
#法二:
l1=[1,2,5];l2=[6,2,7]
tup=[(i,j) for i in l1 for j in l2]
[k for k in tup if k[0]==k[1]]
- 去除一个列表中相邻且重复的元素。
l1=[1,2,3,4,4,4,4,4,4,5,6,6,8,8,12,12,12,12,13]
l1=[1,2,3,4,4,4,4,4,4,5,6,6,8,8,12,12,12,12,13]
#法一:
uni1=[l1[0]]
for j in range(1,len(l1)):
if l1[j]!=l1[j-1]:
uni1.append(l1[j])
uni1
#法二:
set(l1)
- 用户名密码对应(字典)
给定两个列表,一个存放用户名,一个存放密码。请将用户名和密码按顺序进行对应为一个元素。
Username=[‘jack’,’bob’,’john’]
Password=[‘123’,’859’,’hello’]
Eg:l1=[‘julyedu’,‘AI教育’] ;l2=[’.com’,‘平台’],list(zip(l1,l2))得到一一对应的关系,则得到:[(‘julyedu’, ‘.com’), (‘AI教育’, ‘平台’)]。
Username=['jack','bob','john']
Password=['123','859','hello']
pair=zip(Username,Password);dict(pair)
- 使用列表推导式,打印出颜色与尺寸的(组合)
colors=[‘black’,‘white’]
sizes=[‘S’,‘M’,‘L’]
colors=['black','white']
sizes=['S','M','L']
[(i,j) for i in colors for j in sizes]
- 词频统计
l1=[‘sklearn’,‘AI’,‘julyedu.com’,‘Caffe’,‘AI’,'sklearn‘]
对l1包含的单词,利用dict统计词频
对每个参数进行判断,若在则对应的value+1
否则根据该字符创建一个key并且value设置为1
最后输出该词典
base={}.fromkeys(l1,0) 创建一个新字典,以序列中元素做字典的键,value 为字典所有键对应的初始值
l1=['sklearn','AI','julyedu.com','Caffe','AI','sklearn']
base={}.fromkeys(l1,0)
for item in l1:
base[item]+=1
base
- 实现行列互转
arr= [[1, 2, 3], [4, 5, 6], [7,8, 9], [10, 11, 12]]
Eg:l1=[‘julyedu’,‘AI教育’] ;l2=[’.com’,‘平台’],list(zip(l1,l2))得到一一对应的关系,则得到:[(‘julyedu’, ‘.com’), (‘AI教育’, ‘平台’)]。
#法一:
import numpy as np
arr=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
np.array(arr).T.tolist()
#法二:
arr= [[1, 2, 3], [4, 5, 6], [7,8, 9], [10, 11, 12]]
list(zip(arr[0],arr[1],arr[2],arr[3]))
#法三:
arr= [[1, 2, 3], [4, 5, 6], [7,8, 9], [10, 11, 12]]
list(zip(*arr))
- 实现求指定长度的Fibonacci 数列
Fib数组初始为[0,1]
分别要求使用循环和列表实现
#法一:
def fibonacci(n):
Fib=[0,1]
a=Fib[0]
b=Fib[1]
i=2
while i<n:
tmp=a
a=b
b=a+tmp
Fib.append(b)
i+=1
return Fib
#test
fibonacci(10)
#法二:
import numpy as np
def fibonacci2(n):
Fib=[0,1]
a=np.zeros(n)
a[0]=Fib[0];a[1]=Fib[1]
for i in range(2,n):
a[i]=a[i-1]+a[i-2]
Fib.append(int(a[i]))
return Fib
#test
fibonacci2(10)
- 输入含有[]的字符串,输出对中括号出现规则的检测结果
[ ]对应检查
输入含有[]的字符串,输出对中括号出现规则的检测结果
[] OK ][ NOT OK
[][] OK ][][ NOT OK
[[][]] OK []][[] NOT OK
[[][[]]] OK ][]][[][ NOT OK
s=input('type several [ and ]:')
dictbase={'[':0,']':0}
if s.count('[')!=s.count(']'):
print("'[' and ']'have different number")
else:
for i in s:
if i=='[':
dictbase['[']+=1
elif (i==']') & (dictbase[']']<dictbase['[']):
dictbase[']']+=1
else:
pass
if (dictbase['[']==dictbase[']']) & (dictbase['[']!=0):
print("OK!")
elif dictbase['[']!=0:
print("NOT OK!")
else:
pass