python面试题(4)

来源:互联网 发布:80和8080端口 编辑:程序博客网 时间:2024/05/24 07:19

question1:

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

1.txt中的文件。

a123 234 asd12b234c345d456e567f678g789k123

下面是提取后的结果

2.txt

123 234 12234345456567678789123

代码实现过程如下:

import rea = re.compile("\d+")def change(line):    catch = re.findall(a,line)    catch = " ".join(catch)    yield catcharead = 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等长的listb = list("0"*len(a))print(b)for i in range(len(a),0,-1):    b[len(a)-i] = a[i-1]print(b)
原创粉丝点击