小编Chr*_*nds的帖子

列表和元组之间有什么区别?

有什么不同?

元组/列表的优点/缺点是什么?

python tuples list

975
推荐指数
14
解决办法
40万
查看次数

按多个属性对列表进行排序?

我有一份清单清单:

[[12, 'tall', 'blue', 1],
[2, 'short', 'red', 9],
[4, 'tall', 'blue', 13]]
Run Code Online (Sandbox Code Playgroud)

如果我想按一个元素排序,比如高/短元素,我可以通过s = sorted(s, key = itemgetter(1)).

如果我想作为排序依据两个高大/ short和颜色,我可以为每个元素做排序两次,一次,但有一个更快的方法?

python sorting

398
推荐指数
5
解决办法
25万
查看次数

是否在Python 3.6+中订购了字典?

字典在Python 3.6中排序(至少在CPython实现下),与之前的版本不同.这似乎是一个重大变化,但它只是文档中的一小段.它被描述为CPython实现细节而不是语言特性,但也暗示这可能成为未来的标准.

在保留元素顺序的同时,新字典实现如何比旧字典实现更好?

以下是文档中的文字:

dict()现在使用PyPy开创的"紧凑"表示.与Python 3.5相比,新dict()的内存使用量减少了20%到25%.PEP 468(在函数中保留**kwargs的顺序.)由此实现.这个新实现的顺序保留方面被认为是一个实现细节,不应该依赖(这可能会在未来发生变化,但是在更改语言规范之前,希望在几种版本的语言中使用这个新的dict实现为所有当前和未来的Python实现强制命令保留语义;这也有助于保持与随机迭代顺序仍然有效的语言的旧版本的向后兼容性,例如Python 3.5).(由INADA Naoki在issue 27350中提供.最初由Raymond Hettinger提出的想法.)

2017年12月更新:Python 3.7 保证dict保留插入顺序

python dictionary python-3.x python-internals python-3.6

386
推荐指数
5
解决办法
8万
查看次数

PyCharm:"简化链式比较"

我有一个整数值x,我需要检查它是否在a startend值之间,所以我写下面的语句:

if x >= start and x <= end:
    # do stuff
Run Code Online (Sandbox Code Playgroud)

这个陈述有下划线,工具提示告诉我必须

简化链式比较

据我所知,这种比较就像它们来的一样简单.我错过了什么?

python pycharm

225
推荐指数
2
解决办法
7万
查看次数

如何在Jupyter Notebook中显示文件中的图像?

我想用IPython笔记本作为交互式分析我用Biopython GenomeDiagram模块制作的一些基因组图表的方法.虽然有关于如何matplotlib在IPython笔记本中使用内联图形的大量文档,但GenomeDiagram使用了ReportLab工具包,我认为它不支持IPython中的内联图形.

然而,我想,解决这个问题的方法是将绘图/基因组图表写入文件,然后打开内联图像,这将具有相同的结果,如下所示:

gd_diagram.write("test.png", "PNG")
display(file="test.png")
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何做到这一点 - 或者知道它是否可行.那么有人知道图像是否可以在IPython中打开/显示?

python ipython jupyter-notebook

156
推荐指数
10
解决办法
18万
查看次数

如何在python shell中重新加载一个类?

如果我导入定义属于某个包的同名类的模块,则由于父包的__init__.py而导致它作为Class而不是Module导入.有关详细信息,请参阅不同目录的不同导入结 在Python shell或ipython shell中,如果我这样做

from MyPak import MyMod

MyModule总是作为Class导入,因此我无法重新加载它(reload()仅适用于模块).跑

from MyPak import MyMod

再似乎没有更新类定义.任何人都可以建议一种方法来更新python shell中的类?

PS.无需重新启动python解释器.

pps.万一你手头有代码并想测试它:我实际上是在谈论BioPython,我正在研究Bio.PDB.PDBParser.我有一个ipython shell(v0.10)并编辑PDBParser.py.只是无法在ipython中重新加载它.

所以这就是我所做的:

# start ipython v0.10
import Bio
from Bio.PDB import PDBParser
p = PDBParser()
s = p.get_structure()
# then I make changes,e.g. simply print some text, in PDBParser.py
del Bio
del PDBParser
del s
import Bio  # or reload(Bio) without deleting all the objects
from Bio.PDB import PDBParser
p = PDBParser()
s = p.get_structure() # expected output after change not …
Run Code Online (Sandbox Code Playgroud)

python ipython

63
推荐指数
5
解决办法
5万
查看次数

OrderedDict会在Python 3.7中变得多余吗?

Python 3.7更改日志:

dict对象的插入顺序保存性质已被声明为Python语言规范的官方部分.

这是否意味着OrderedDict会变得多余?我能想到的唯一用途是保持与旧版本Python的向后兼容性,这些版本不保留普通字典的插入顺序.

python dictionary python-3.x python-3.7 ordereddict

55
推荐指数
1
解决办法
4746
查看次数

Python-找到列表中出现次数最多的项目

在Python中,我有一个列表:

L = [1, 2, 45, 55, 5, 4, 4, 4, 4, 4, 4, 5456, 56, 6, 7, 67]  
Run Code Online (Sandbox Code Playgroud)

我想确定发生次数最多的项目.我能够解决它,但我需要最快的方法来解决它.我知道有一个很好的Pythonic答案.

python list max counting

51
推荐指数
5
解决办法
8万
查看次数

":="语法和赋值表达式:什么和为什么?

PEP 572引入了为Python 3.8实现的赋值表达式.这似乎是一个非常重要的新功能,因为它将允许在理解和lambda函数中进行这种形式的赋值.

赋值表达式的语法,语义和语法规范究竟是什么?(请注意,我知道人们可以阅读PEP 572,但对于SO来说,这似乎仍然是一个有用的参考问题.)

PEP 379中关于"添加赋值表达式" 的类似想法之前被拒绝时,为什么会引入这个新的(看似相当激进的概念)呢?

python python-3.x python-3.8 python-assignment-expression

42
推荐指数
3
解决办法
6110
查看次数

[] =(),()=()和{} =()'赋值'

我惊讶地发现以下内容,在Python 3中,前两个没有提出任何结果:

>>> [] = ()
>>> () = ()
>>> {} = ()
  File "<stdin>", line 1
SyntaxError: can't assign to literal
Run Code Online (Sandbox Code Playgroud)

在Python 2.7中,只有第一个没有提出任何东西:

>>> [] = ()
>>> () = ()
  File "<stdin>", line 1
SyntaxError: can't assign to ()
>>> {} = ()
  File "<stdin>", line 1
SyntaxError: can't assign to literal
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?那么为什么没有提出任何错误呢?为什么() = ()可能在Python 3中被添加为有效?

*注意,您可以用任何空的可迭代(例如[] = set())替换右侧,我只选择一个空的元组用于插图

python python-2.7 python-3.x

37
推荐指数
4
解决办法
2494
查看次数