python面试题(4)

question1:

一个1.txt的文件,里面的文件每一行提取数字部分,要求使用yield,提取的数字部分写入一个新的文件当中2.txt。

1.txt中的文件。
a123 234 asd12
b234
c345
d456
e567
f678
g789
k123

下面是提取后的结果

2.txt
123 234 12
234
345
456
567
678
789
123

代码实现过程如下:

import re
a = re.compile("\d+")
def change(line):
    catch = re.findall(a,line)
    catch = " ".join(catch)
    yield catch

aread = open("1.txt","r")
awrite = open("2.txt","w")
b = aread.readline()
while b:
    c = change(b)
    b = aread.readline()
    for i in c:
        awrite.write(i+"\n")
aread.close()
awrite.close()

一点感想:这个题本身并不是很难,可能因为面试官看着在面,所有有些紧张。后来自己一敲,很快就实现了。还是心里素质不太好。要强加练习。

question2:

mylist = [1,2,3,4,5]
##列表反转问题(不能使用reverse函数)

第一种解

b = []
for i in range(len(mylist)-1,-1,-1):
    b.append(mylist[i])
print(b)

第二种解

print(mylist[::-1])

第三种解

c = []
d = [c.insert(0,i) for i in mylist]
print(c)

第四种解(这种直接对原来的列表进行了反转)

 for i in range(len(mylist)//2):
     mylist[i],mylist[len(mylist)-1-i] = mylist[len(mylist)-1-i],mylist[i]
print(mylist)

第五种解法

a = [1,2,3,4,5]
#法1:用copy的方法
# b = a.copy() 可以用copy的方法
#法2:直接创建一个和a等长的list
b = list("0"*len(a))
print(b)
for i in range(len(a),0,-1):
    b[len(a)-i] = a[i-1]
print(b)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值