200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python代码基础题-Python初学者福利 完整试题附答案 干货(收藏篇)

python代码基础题-Python初学者福利 完整试题附答案 干货(收藏篇)

时间:2024-03-27 17:21:08

相关推荐

python代码基础题-Python初学者福利 完整试题附答案 干货(收藏篇)

很多粉丝问我有没有试题之类的,当然有啊,昨天加班加点整理了一部分试题,都是重磅,话不多说,直接上,粉丝的要求,小编绝对满足。

Python基础

文件操作

1.有一个jsonline格式的文件file.txt大小约为10K

def get_lines():

with open('file.txt','rb') as f:

return f.readlines()

if __name__ == '__main__':

for e in get_lines():

process(e) # 处理每一行数据

现在要处理一个大小为10G的文件,但是内存只有4G,如果在只修改get_lines 函数而其他代码保持不变的情况下,应该如何实现?需要考虑的问题都有那些?

def get_lines():

with open('file.txt','rb') as f:

for i in f:

yield i

个人认为:还是设置下每次返回的行数较好,否则读取次数太多。

def get_lines():

l = []

with open('file.txt','rb') as f:

data = f.readlines(60000)

l.append(data)

yield l

Pandaaaa906提供的方法

from mmap import mmap

def get_lines(fp):

with open(fp,"r+") as f:

m = mmap(f.fileno(), 0)

tmp = 0

for i, char in enumerate(m):

if char==b" ":

yield m[tmp:i+1].decode()

tmp = i+1

if __name__=="__main__":

for i in get_lines("fp_some_huge_file"):

print(i)

要考虑的问题有:内存只有4G无法一次性读入10G文件,需要分批读入分批读入数据要记录每次读入数据的位置。分批每次读取数据的大小,太小会在读取操作花费过多时间。

2.补充缺失的代码

def print_directory_contents(sPath):

"""

这个函数接收文件夹的名称作为输入参数

返回该文件夹中文件的路径

以及其包含文件夹中文件的路径

"""

import os

for s_child in os.listdir(s_path):

s_child_path = os.path.join(s_path, s_child)

if os.path.isdir(s_child_path):

print_directory_contents(s_child_path)

else:

print(s_child_path)

模块与包

3.输入日期, 判断这一天是这一年的第几天?

import datetime

def dayofyear():

year= input("请输入年份: ")

month = input("请输入月份: ")

day = input("请输入天: ")

date1 = datetime.date(year=int(year),month=int(month),day=int(day))

date2 = datetime.date(year=int(year),month=1,day=1)

return (date1-date2).days+1

4.打乱一个排好序的list对象alist?

import random

alist = [1,2,3,4,5]

random.shuffle(alist)

print(alist)

数据类型

5.现有字典 d= {'a':24,'g':52,'i':12,'k':33}请按value值进行排序?

sorted(d.items(),key=lambda x:x[1])

x[0]代表用key进行排序;x[1]代表用value进行排序。

6.字典推导式

d = {key:value for (key,value) in iterable}

7.请反转字符串 "aStr"?

print("aStr"[::-1])

8.将字符串 "k:1 |k1:2|k2:3|k3:4",处理成字典 {k:1,k1:2,...}

str1 = "k:1|k1:2|k2:3|k3:4"

def str2dict(str1):

dict1 = {}

for iterms in str1.split('|'):

key,value = iterms.split(':')

dict1[key] = value

return dict1

#字典推导式

d = {k:int(v) for t in str1.split("|") for k, v in (t.split(":"), )}

9.请按alist中元素的age由大到小排序

alist = [{'name':'a','age':20},{'name':'b','age':30},{'name':'c','age':25}]

def sort_by_age(list1):

return sorted(alist,key=lambda x:x['age'],reverse=True)

10.下面代码的输出结果将是什么?

list = ['a','b','c','d','e']

print(list[10:])

代码将输出[],不会产生IndexError错误,就像所期望的那样,尝试用超出成员的个数的index来获取某个列表的成员。例如,尝试获取list[10]和之后的成员,会导致IndexError。然而,尝试获取列表的切片,开始的index超过了成员个数不会产生IndexError,而是仅仅返回一个空列表。这成为特别让人恶心的疑难杂症,因为运行的时候没有错误产生,导致Bug很难被追踪到。

11.写一个列表生成式,产生一个公差为11的等差数列

print([x*11 for x in range(10)])

12.给定两个列表,怎么找出他们相同的元素和不同的元素?

list1 = [1,2,3]

list2 = [3,4,5]

set1 = set(list1)

set2 = set(list2)

print(set1 & set2)

print(set1 ^ set2)

13.请写出一段python代码实现删除list里面的重复元素?

l1 = ['b','c','d','c','a','a']

l2 = list(set(l1))

print(l2)

用list类的sort方法:

l1 = ['b','c','d','c','a','a']

l2 = list(set(l1))

l2.sort(key=l1.index)

print(l2)

也可以这样写:

l1 = ['b','c','d','c','a','a']

l2 = sorted(set(l1),key=l1.index)

print(l2)

也可以用遍历:

l1 = ['b','c','d','c','a','a']

l2 = []

for i in l1:

if not i in l2:

l2.append(i)

print(l2)

14.给定两个list A,B ,请用找出A,B中相同与不同的元素

A,B 中相同元素: print(set(A)&set(B))

A,B 中不同元素: print(set(A)^set(B))

下一篇文章更新企业面试题,为你加油,文章几乎涵盖了python会用的架构,在面试可以手画架构图,根据自己的项目谈下技术选型和优劣,遇到的坑等。绝对加分

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。