翻译|Stackoverflow上关于Python的高票问答(二)
来源:互联网 发布:汉服配饰淘宝 编辑:程序博客网 时间:2024/05/16 19:47
文中链接无法打开,请点击阅读原文
Stackoverflow是一个非常优秀的与程序相关的IT技术问答的英文网站。无论你处在什么状态,当你编程碰到问题的时候你总能找到你想要的答案。学习编程专栏打算翻译这一系列的问答计划进行的方向如下。
翻译Stack Overflow上关于Python的高票问答(Java)(JavaScript)(Php)(C#)每一种语言都会出两到三篇文章,每一篇会有一到三个问题。
已翻译篇章:翻译|Stack Overflow上关于Python的高票问答(一)
问题一:在Python中我怎样检测一个文件是否存在?
问题二:在Python中我怎样使用一个外部命令?
问题三:对一个字典按照值(values)进行排序
问题四:检测一个list为空的最佳方案?
问题五:如何在一个函数体内使用全局变量而不是创建。
问题一:How do I check whether a file exists using Python?
问题描述:Python中我怎样在不使用测试语句的情况下检测一个文件是否存在。
回答(获得2392赞同) :
你可以使用Python中的内建函数:os.path.isfile
Return True if path is an existing regular file. This follows symbolic links, so both islink() and isfile() can be true for the same path.
os.path.isfile(fname)
如果你要确认它确实是一个文件,而不是其它的什么东西。
在 Python 3.4中, pathlib module提供了一个面向对象的方法,看下面的实例代码:
my_file = Path("/path/to/file")
if my_file.is_file():
# file exists
问题二:Calling an external command in Python
问题描述:我怎样在Python脚本中使用一个外部命令:就像Unix的shell或者Windows的命令提示符。
回答(获得2222赞同) :
我们来看一下标准库中的 subprocess module
call(["ls", "-l"])
subprocess模块与系统模块(system)比较,subprocess模块的的优势是更加灵活。我觉得os.system模块是过时的,我觉得他应该是这样的:replacing-older-functions-with-the-subprocess-module
但是,对于快速的一次性的脚本,使用os.system就足够了。
问题三:Sort a Python dictionary by value
问题描述:我有一个字典(dictionary),这个字典的值是从某个数据库的两个字段读取的:一个字段是string类型,另一个一个字段是 numeric类型,这个string字段是唯一的,所以该字段作为字典的键(key)。
我现在可以按照键(keys)进行排序,但是我怎样才能按照值(values)排序呢?
注:我已经读过了Stack Overflow的另一个问题:How do I sort a list of dictionaries by values of the dictionary in Python? 并且可以按照题目中的解决方法把我的代码分成了字典列表,但是实际上我并不需要字典列表,我想知道有没有什么更简单的方法。
回答(获得2300赞同) :
对一个字典(dict)进行排序是不可能的,你能得到的仅仅是经过排序的字典的表示。字典生来就是无序的,但是其他的数据类型比如:list(列表)、tuple(元组)是有序的,所以你需要一个能排序的表示:他可能是一个list或者是一个元组列表。
例如:
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))
sorted_x将是一个元组列表,这个列表是按照每个元组的第二个元素进行排序的。
dict(sorted_x) == x.
然后像上面这样,再把sorted_x转成一个字典,dict(sorted_x)就是你想要的结果。这样你就能完成按照字典的values进行排序了。
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
问题四:Best way to check if a list is empty
问题描述:
举个例子,现在我有如下代码:
我怎样才能去判断这个列表a为空
回答(获得2418赞同) :
print("List is empty")
使用空列表的隐式booleanness是相当Python化的。
问题五:Using global variables in a function other than the one that created them
问题描述:如果我在一个函数体内创建了一个全局变量,我怎样才能在其他的函数内使用这个变量呢?我需要把这个全局变量存储在需要使用这个全局变量的函数的局部变量中吗?
回答(获得2429赞同) :
你可以通过在每一个你需要使用全局变量的函数体内用global关键词来描述这个变量从而可以在函数体内使用这个全局变量。
我的理解是:全局变量是非常危险的,Python希望你明白你在使用全局变量,因此在每次使用的时候,它都需要关键词:global
热文
爬取了bilibili站644w视频信息之后的故事。
Python对微信好友进行简单统计分析
程序员的生存技巧 —— 搜索技巧
vim/vi命令整理
- 翻译|Stackoverflow上关于Python的高票问答(二)
- Stackoverflow关于C++的Votes最高的一个问答
- Python中yield关键字(stackoverflow高票回答)
- [每日高赞翻译stackoverflow](1)string 和 String 的区别
- Stackoverflow上的Python问题精选
- Stackoverflow上的Python问题精选
- WiKi上关于USRP使用的一些问答(二)
- stackoverflow上Java相关回答整理翻译
- Stackoverflow上关于if-else语句的有趣问题
- StackOverflow上看到的关于返回值一个问题
- stackoverflow 上关于选择 switch 而不是 if / else 的讨论
- Robert Love 在 quora 上关于 Linux Kernel 的问答摘录之二
- [翻译]关于Adobe最新的Flash/HTML5策略的问答
- [翻译]关于Adobe最新的Flash/HTML5策略的问答
- 关于Python编程的一些问答
- 关于Python编程的一些问答
- python爬虫(二)爬取知乎问答
- StackOverFlow精选问答集锦
- 微信的这个功能99%的人都不知道
- 常见面试题整理--Python概念篇
- 无人驾驶技术微盘点,你就是无人驾驶深度学习挑战赛等待的科技狂人!
- 送书活动|书单整理
- 马云爸爸:有你们真好。
- 翻译|Stackoverflow上关于Python的高票问答(二)
- 在一个千万级的数据库查寻中,如何提高查询效率?
- 为什么我看不懂你的代码
- 如何用一段简单的代码讲述一个悲伤的故事?
- 高效编程之欲擒故纵
- 如何用一段简单的代码讲述一个悲伤的故事?
- 学习编程道路上的入门书籍之C#篇
- android代码执行adb shell终端命令(linux命令)并返回执行结果
- 为什么你应该(从现在开始就)写博客