在 Stackoverflow 找了许久,挑了5个比较火的 Python 问答!

简介: Stackoverflow 作为全球最大的开发者问答社区,里面积累了许多优质问答内容,在这里我根据 issue 的投票排行榜单,挑选了在 Python 模块中点赞比较高的 5 个问答,并整理推送给大家,如果你能坚持把文章全部内容看完,一定会有所收获!

Stackoverflow 作为全球最大的开发者问答社区,里面积累了许多优质问答内容,在这里我根据 issue 的投票排行榜单,挑选了在 Python 模块中点赞比较高的 5 个问答,并整理推送给大家,如果你能坚持把文章全部内容看完,一定会有所收获!


1,如何将含列表的列表变为 flat list(一维列表)

可能会有小伙伴看到题目比较蒙,这列先解释一下几个名词,含列表中的列表(代称 形式一)表示形式如下,此列表类型中不仅含有单个元素,还含有列表元素;

[[1, 2, 3], [4, 5, 6], [7], [8, 9]]


flat list ( 代称形式二 ):flat 的意思表示平坦,意思就是把列表摊平即列表元素只含有单个元素,形式如下

[1, 2, 3, 4, 5, 6, 7, 8, 9]


如何将 形式一 变为 形式二,这里给出了几种方法:

1,一行代码实现

**(1)**借助列表推导(list comprehension)

list2d = [[1,2,3],[4,5,6],[7],[8,9]]
flat_list = [item for sublist in list2d for item in sublist]


(2) 借助 lambda 函数

faltten = lambda l:[item for sublist in l for item in sublist]
faltten(list2d)


2,借助  itertools 模块

(1)  借助  itertools.chain() 方法

import itertools
list2d = [[1,2,3], [4,5,6], [7], [8,9]]
merged = list(itertools.chain(*list2d))


(2) 借助 itertools.chain.from_iterable() 方法 ,不需要在列表前缀 ***** 操作符

import itertools
list2d = [[1,2,3], [4,5,6], [7], [8,9]]
merged = list(itertools.chain.from_iterable(list2d))


2, Python 中是否含有字符串 contains 方法

Java 中 提供了 string.contains( substring) 和 string.indexof( substring ) 方法,用于判断 substring 是否包含在 String 中,那么 Python 中是否含有此类方法,或者有什么可以替代的语法?


**答 : ** Python 中没有此方法(函数),但却有其它可替代的功能语法

1,利用 in 操作符进行判断

if "blah" not in somestring: 
    continue


2,string.find 来进行替代

此方法与 String.indexof(substring)相似,返回 substring 在 String 第一次出现的索引位置,不出现的话返回 -1;

s = "This be a string"
if s.find("is") == -1:
    print("No 'is' here!")
else:
    print("Found 'is' in the string.")


3, Python 怎样得到一个文件夹下的所有文件

1,通过 os.listdir() 方法可以得到一个文件夹下的所有文件和文件夹,若只想得到文件,可以借助 os.path.isfile 来进行筛选

from os import listdir
from os.path import isfile, join
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]


2, 通过 os.walk()  对指定文件路径生成器得到两个列表,一个表示文件列表,一个表示文件夹列表如果只查看某个文件夹下的文件列表(不是包含的全部文件),只需在第一次生成时 break 中断一下即可

from os import walk
f = []
for (dirpath, dirnames, filenames) in walk(mypath):
    f.extend(filenames)
    break
# 更简单的方法
(_, _, filenames) = walk(mypath).next()


4,理解 Python 中的切片符号

Python 中对数组、列表等数据类型进行切片操作很常见,但在切片操作中符号  :  所在位置不同,导致最终切片效果也不一样,因此这个帖子来帮助我们认识 符号 :  在切片不同位置的几个作用

1, 常见的几个切片操作

a[start:stop] # 得到索引为 start-stop-1的类目列表;
a[start:] # 得到索引为 start及以后 的类目列表;
a[:stop] # 得到索引为 0- stop-1 的类目列表;
a[:] # 得到全部索引列表;


2, 加入 step(步长) 参数之后的切片操作;

a[start:stop:step] # 得到从 start->stop-1 之间间隔为 step 的列表元素;


a[start:stop:step]a[start:stop] 最大区别是后者 step 默认设置为1;

3, start 与 stop 参数都为负时:

a[-1] # 得到最后一个元素;
a[-2:] # 得到最后两个元素;
a[:-2] # 得到源列表元素中去除后两个元素之后的元素列表


4, step 为负时

a[::-1]    # 得到数组中所有元素,并逆置
a[1::-1]   # 前两个元素, 并逆置
a[:-3:-1]  # 最后两个元素, 并逆置;
a[-3::-1]  # 源列表元素中移除最后两个元素之后的元素列表, 并逆置


5, [] 与 slice() 对象之间的联系

: 作为切片操作符 [] 可作为 slice() 对象

a[start:stop:step]


等价于

a[slice(start, stop, step)]


5, Python 中如何以 value 为基准对字典进行排序?

Python 字典数据类型是以 键值对 {key:value} 组合得到,那如何 以 value 为基准对字典进行排序呢,有没有什么简单的方法?

1, Python 3.6+  sorted() + lambda 函数

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
{k: v for k, v in sorted(x.items(), key=lambda item: item[1])}
{0: 0, 2: 1, 1: 2, 4: 3, 3: 4}


2, 用 tuple 表示 dict 进行排序,完成后再转化为 dict;

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = dict(sorted(x.items(), key=operator.itemgetter(1)))


3, 借助于 collections 模块

import collections
sorted_dict = collections.OrderedDict(sorted_x)

好了以上就是本篇文章的全部内容了,最后感谢大家的阅读!

相关文章
|
4月前
|
NoSQL 关系型数据库 MySQL
基于Python和mysql开发的BBS问答社区管理系统(源码+数据库+程序配置说明书+程序使用说明书)
基于Python和mysql开发的BBS问答社区管理系统(源码+数据库+程序配置说明书+程序使用说明书)
|
3月前
|
Linux iOS开发 MacOS
【chat-gpt问答记录】python虚拟环境venv的简介及使用
【chat-gpt问答记录】python虚拟环境venv的简介及使用
50 2
|
3月前
|
存储 JSON JavaScript
【chat-gpt问答记录】python将数据存为json格式和yaml格式
【chat-gpt问答记录】python将数据存为json格式和yaml格式
56 1
|
4月前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
472 9
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
4月前
|
数据采集 机器学习/深度学习 数据可视化
数据科学面试准备:解决Python数据分析常见问答和挑战
【4月更文挑战第12天】本文介绍了Python数据分析面试中常见的问题和挑战,涉及Pandas、NumPy、Matplotlib等库的基础知识,以及数据预处理、探索性分析、可视化、回归分析和分类分析的方法。例如,使用Pandas处理缺失值和异常值,利用Matplotlib和Seaborn进行数据可视化,通过Scikit-learn进行回归和分类模型的构建。
164 2
|
Python
Python 在问答频道中刷题积累到的小技巧(六)
Python 在问答频道中刷题积累到的小技巧(六)
76 0
|
数据安全/隐私保护 Python
Python 在问答频道中刷题积累到的小技巧(五)
Python 在问答频道中刷题积累到的小技巧(五)
64 0
|
机器学习/深度学习 Python
Python 在问答频道中刷题积累到的小技巧(三)
Python 在问答频道中刷题积累到的小技巧(三)
81 0
|
Python
Python 在问答频道中刷题积累到的小技巧(二)
Python 在问答频道中刷题积累到的小技巧(二)
55 0
|
算法 搜索推荐 Python
Python中文字符排序、英文字符排序、数值排序的本质比较和区别【刘金玉的Python笔记06】
Python中文字符排序、英文字符排序、数值排序的本质比较和区别【刘金玉的Python笔记06】
199 0
Python中文字符排序、英文字符排序、数值排序的本质比较和区别【刘金玉的Python笔记06】