python解题错题本

1、nums[i+1:].index(res)中.index()方法可以返回元素所在列表的下标,使用非常普遍,牢记

2、.join() 函数,这个函数展开来写应该是str.join(item),join函数是一个字符串操作函数,str表示字符串(字符),item表示一个成员,注意括号里必须只能有一个成员,比如','.join('a','b')这种写法是行不通的。','.join('abc')上面代码的含义是“将字符串abc中的每个成员以字符','分隔开再拼接成一个字符串”,输出结果为:'a,b,c'。join里放列表、元组、字典也是可以的

3、sorted函数,内部可以放可迭代对象,返回排序后的样子,例如a = "cdax" b = sorted(a) return b可以得到["a","c","d","x"],结果是一个列表,内部是每个元素的排序,会以单个字符串呈现

4、若要一对多的形式尽量使用字典存储,字典某个键对应的值可以是一个列表,可以使用append方法添加,例如table[s_].append(s),最后只需要值的话可以使用values方法,例如table.values()

5、ord(s)函数用来获取字符s的ASCII码,在创建哈希函数会用到,dict = defaultdict(list)创建一个默认字典dict。默认字典是一种特殊的字典,当你试图访问一个不存在的键时,它会自动创建一个默认值。在这里,每个键的默认值是一个空列表。

6、用好while循环能够事半功倍,while循环:while condition:  # code to be executed。这里的condition是一个布尔表达式,如果其结果为True,则执行循环体中的代码。一旦condition变为False,循环就会停止。好好理解,执行语句执行到while时会循环执行while命令,直到不满足条件为止,可以用来判断某个递增条件的终点,或者反复执行某个命令。

7、pd.read_excel('')单引号内写文件路径,读取文件

8、df_img['id'] = df_img.apply(lambda x: str(x.lable.split("_")[0]), axis=1),先解释匿名函数,x.lable表示取出x的lable项,.split("_")这是分割方法,以_为标志进行分割,[0]表示取第一项,str()是转化为字符串函数,axis=1表示逐行操作,若是axis=0则是逐列操作。

9、在pandas库中,参数axis用于指定数据操作的方向。axis=1表示操作应该沿着每一行或者跨越行进行,也就是沿着列的方向。这在一些函数中非常有用,比如apply(), drop(), mean()等等。

例如,在apply()函数中,如果设置axis=1,那么传入的函数会被应用到每一行;在drop()函数中,如果设置axis=1,那么会删除指定的列。

相对的,axis=0表示操作应该沿着每一列或者跨越列进行,也就是沿着行的方向。例如,在apply()函数中,如果设置axis=0,那么传入的函数会被应用到每一列;在drop()函数中,如果设置axis=0,那么会删除指定的行。

10、pd.to_datetime()日期转化函数,转化为日期,不带时刻。.strftime('%Y-%m-%d')时间格式化函数

11、df_img.drop_duplicates(subset='file_name'),去重函数,subset接收去重的参考列

12、在pandas中,unique()函数用于获取列中的所有唯一值,返回的是一个数组,包含列中所有不同的值。这个函数常常用于查看一列中有哪些不同的值,或者有多少个不同的值。

13、df_driver['driver_id'] = df_driver['driver_id'].astype(str),在pandas中,astype()函数用于更改列的数据类型。在这个例子中,astype(str)表示将'driver_id'列的数据类型转换为字符串类型。

这个操作通常在数据预处理阶段使用,例如,当我们需要将数字类型的数据转换为字符串类型,或者将字符串类型的数据转换为日期类型等。

14、sel_driver_id = list(df_driver['driver_id'].unique()) df = df_img[df_img.driver_id.isin(sel_driver_id)],

这两行代码的作用是从df_img DataFrame中筛选出那些'driver_id'在df_driver DataFrame中出现过的行。

  1. sel_driver_id = list(df_driver['driver_id'].unique()): 这行代码是获取df_driver DataFrame中'driver_id'列的所有唯一值,并将这些唯一值转换为一个列表,存储在sel_driver_id变量中。

  2. df = df_img[df_img.driver_id.isin(sel_driver_id)]: 这行代码是筛选出df_img DataFrame中那些'driver_id'在sel_driver_id列表中的行,并将筛选结果存储在df DataFrame中。

在pandas中,isin()函数用于检查每个元素是否存在于传入的列表中,返回一个布尔值的序列。这个函数常常用于根据某些条件筛选数据。

15、df['file_name'].duplicated().any(): 这行代码首先使用duplicated()函数检查'file_name'列中的每个值是否是重复的,返回一个布尔值的序列。然后使用any()函数检查这个序列中是否有True,如果有,返回True,否则返回False。所以,如果'file_name'列中有重复值,这行代码的结果就会是True,否则就会是False。

16、df[df['file_name'].duplicated(keep=False)]['file_name'].unique(): 这行代码首先使用duplicated(keep=False)函数检查'file_name'列中的每个值是否是重复的,与duplicated()函数不同的是,如果一个值在列中出现了多次,duplicated(keep=False)会将这个值的所有出现都标记为True。然后使用这个布尔值的序列筛选出df中的行,最后使用unique()函数获取这些行中'file_name'列的所有唯一值。所以,这行代码的结果就是'file_name'列中所有重复的值。

17、在Python的os库中,os.path.basename()函数接受一个路径作为输入,然后返回路径的最后一部分,也就是文件名或者最后一个目录名。如果路径以目录分隔符结束,那么返回的就是空字符串。

例如:

  • 如果file_path'/home/user/documents/file.txt',那么os.path.basename(file_path)的结果就是'file.txt'
  • 如果file_path'/home/user/documents/folder/',那么os.path.basename(file_path)的结果就是空字符串。

18、使用Python的Path类(来自pathlib模块)创建了一个Path对象,代表一个文件系统路径。

Path类是Python 3.4及更高版本中引入的,用于处理文件系统路径。与使用os模块的函数相比,使用Path类可以用更简洁、更直观的方式处理路径。

在这个例子中,original_path是一个Path对象,代表路径'/Users/catorg/Desktop/工作汇总/2023.07/ConvNeXt_V2/image_data_2nd'

你可以对Path对象进行各种操作,例如:

  • original_path.name:返回路径的文件名,例如'image_data_2nd'
  • original_path.parent:返回路径的父路径,例如Path('/Users/catorg/Desktop/工作汇总/2023.07/ConvNeXt_V2')
  • original_path.exists():检查路径是否存在。
  • original_path.is_file():检查路径是否是一个文件。
  • original_path.is_dir():检查路径是否是一个目录。

19、get_image_files(original_path)这行代码是使用fastai库的get_image_files()函数,从original_path指定的路径中获取所有的图像文件。

get_image_files()函数会递归地搜索指定的路径,找出所有的图像文件(如.jpg, .png等),并返回一个包含所有图像文件路径的列表。

在这个例子中,img_path是一个包含original_path路径下所有图像文件路径的列表。

这个函数非常适合在处理图像数据时使用,可以方便地获取到所有的图像文件,无论它们是在同一个目录下,还是分散在多个子目录中。

20、df = df.reset_index(drop=True)这行代码的作用是重置DataFrame df的索引。

在pandas中,每个DataFrame都有一个索引。索引是用来标识每一行的,可以是数字,也可以是其他类型,如字符串。有时候,我们在处理数据的过程中,可能会打乱原来的索引,例如在筛选或排序数据后,索引可能就不再是连续的数字。

reset_index()函数就是用来重置索引的。它会移除原来的索引,并添加一个新的从0开始的整数索引。

在这个函数中,drop=True参数的意思是,不保留原来的索引。如果设置为drop=False(默认值),那么原来的索引会被添加为一个新的列。

所以,df = df.reset_index(drop=True)这行代码的结果就是,df的索引被重置为从0开始的整数,而原来的索引被丢弃。

21、df.groupby(['dt', 'label']).count()这行代码的作用是按照'dt'和'label'列对DataFrame df进行分组,并计算每个组的数量。

在pandas中,groupby()函数用于对数据进行分组。在这个例子中,groupby(['dt', 'label'])表示按照'dt'和'label'两列的值进行分组,具有相同'dt'和'label'值的行会被分到同一组。

count()函数用于计算每个组的数量。在groupby()之后使用count(),可以得到每个组的行数。

所以,df.groupby(['dt', 'label']).count()的结果是一个新的DataFrame,索引是'dt'和'label'的唯一组合,每一列的值是对应组的行数。

这个操作常常用于统计分析,例如,我们可以用这种方式来查看每个日期每个标签的数据有多少。

22、

 

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的Python本代码示例: ```python import os class Question: def __init__(self, question, answer): self.question = question self.answer = answer def __str__(self): return f"{self.question}: {self.answer}" class Quiz: def __init__(self, name): self.name = name self.questions = [] def add_question(self, question, answer): self.questions.append(Question(question, answer)) def remove_question(self, index): del self.questions[index] def list_questions(self): for i, question in enumerate(self.questions): print(f"{i+1}. {question}") def save_quiz(self): with open(f"{self.name}.txt", "w") as f: for question in self.questions: f.write(f"{question.question}|{question.answer}\n") def load_quiz(self): if os.path.exists(f"{self.name}.txt"): with open(f"{self.name}.txt", "r") as f: for line in f: question, answer = line.strip().split("|") self.add_question(question, answer) print(f"{self.name} quiz loaded.") else: print(f"{self.name} quiz does not exist.") def take_quiz(self): score = 0 total = len(self.questions) for question in self.questions: user_answer = input(f"{question.question}: ") if user_answer == question.answer: score += 1 print(f"Your score is {score}/{total}") def clear_quiz(self): self.questions = [] if os.path.exists(f"{self.name}.txt"): os.remove(f"{self.name}.txt") print(f"{self.name} quiz deleted.") else: print(f"{self.name} quiz does not exist.") ``` 这个代码实现了一个`Question`类和一个`Quiz`类,可以用来创建本。你可以通过以下方式来使用这个代码: ```python # 创建一个名为"python"的Quiz python_quiz = Quiz("python") # 添加问和答案 python_quiz.add_question("What is the output of print(2+3*4)?", "14") python_quiz.add_question("What is the keyword used for creating a function?", "def") python_quiz.add_question("What is the output of print('hello'[::-1])?", "olleh") # 列出所有问和答案 python_quiz.list_questions() # 保存Quiz python_quiz.save_quiz() # 加载Quiz python_quiz.load_quiz() # 进行Quiz python_quiz.take_quiz() # 清空Quiz python_quiz.clear_quiz() ``` 这个代码示例可以让你创建一个本,添加问和答案,列出所有问和答案,保存Quiz,加载Quiz,进行Quiz和清空Quiz。但是,请注意这个代码示例仅仅是一个简单的实现,如果你需要更复杂的功能,你需要根据自己的需要进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

愚公移山山不移

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

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

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

打赏作者

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

抵扣说明:

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

余额充值