Python代码练习(二):容器

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
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Laura_Wangzx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值