编程面试题

  • 循环访问分组数据框中的组

    df.groupby返回2元组的列表:索引和组。您可以像这样遍历每个组: for _, g in frame.groupbyframe.index: .... # do something with `g` 但是,如果要对组执行某些操作,则可能有比迭代更好的方法。

  • Python 2.7如何比较列表中的项目

    ==如果项目相同(is),CPython的基础实现将跳过列表中项目的相等性检查()。 CPython使用此作为优化,假设身份暗示平等。 这记录在PyObject_RichCompareBool中

  • 递归函数的危险

    递归在Python中是“不好的”,因为它通常比迭代解决方案要慢,并且因为Python的堆栈深度不是无限的(并且没有尾调用优化)。对于求和函数,是的,您可能想要无限的深度,因为要对一百万个数字进行求和是完全合理的,而性能差异将成为包含大量项的问题。在这种情况下,您不应使用递归。 另一方面,如果要遍历从XML文件读取的DOM树,则不可能超过Python的递归深度(默认为1000)。当然 可以, 但是实际上不

  • How does Python 2.7 compare items inside a list

    CPython’s underlying implementation will skip the equality check == for items in a list if items are identical is. CPython uses this as an optimization assuming identity implies

  • 将稀疏数组中的元素与矩阵中的行相乘

    不幸的是,.multiply如果另一个CSR矩阵密集,则CSR矩阵的方法似乎会使该矩阵致密。因此,这是避免这种情况的一种方法: # Assuming that Y is 1D, might need to do Y = Y.A.ravel or such... # just to make the point that this works only with CSR: if no

  • 在Python中从线程调用多处理安全吗?

    听起来好像当前线程派生时,该进程中所有锁的状态都已复制到子进程中(这似乎是设计错误,并且肯定会死锁)。 这不是设计错误,而是fork早于单进程多线程。所有锁的状态都被复制到子进程中,因为它们只是内存中的对象。进程的整个地址空间都按fork复制。仅有一些不好的选择:要么通过fork复制 所有 线程,要么拒绝多线程

  • 遍历`np.where`的输出

    采用 zip indices = zip*np.wheremyarray == 0 那你可以做 for i, j, k in indices: print ... 例如, In [1]: x = np.random_integer

  • 为什么numpy.dtype('float64')很特殊?

    如果您想将任意对象与Nonepython中的对象进行完全比较,则需要使用: object is None 像在这种情况下一样,任何对象都可能会覆盖其比较运算符以不执行您期望的操作。 至于为什么,dtype(’float64’)在dtypes的上下文中等效于None,就像dtypes等同于typestrings一样 pr

  • 使用unittest测试argparse-退出错误

    这里的窍门是抓住SystemExit而不是ArgumentError。这是您改写的测试以捕获SystemExit: #!usrbinenv python3 import argparse import unittest class SweepTestCaseunittest.TestCase: """Tests t

  • 将数据从Python发送到Javascript(JSON)

    您不必“实现” JSON,python带有一个内置库lib,称为simplejson,您可以将其与普通字典配合使用: try: import simplejson as json except: import json out = {'key': 'value', 'key2': 4} print json.dumpsout stro

  • WxPython:PyInstaller失败,没有名为_core_的模块

    从根本上讲,问题出在PyInstaller版本上-您需要使用该develop版本。已发现此问题,并记录在PyInstaller Github问题上。 要安装最新版本并进行纠正-在命令提示符下键入: $ pip inst

  • Sklearn Kmeans参数混乱吗?

    使用max_iter=2和时n_init=15,kmeans将选择15个初始质心,并在15个运行中的每个运行中向上移动两次。 默认值为n_init=10和max_iter=300。这意味着初始质心将被选择10次,并且每次运行最多将使用300次迭代。这10次测试中最好的是最终结果。 div

  • 被属性遮盖时修改类__dict__

    可能是最好的方法:选择另一个名称。调用属性x和dict键'_x',以便您可以通过常规方式访问它。 另一种方法:添加另一层间接: class Metatype: def __new__cls, name, bases, attrs, **kwargs: attrs['x'] = [0] return

  • 如何在Python中将函数作为函数参数传递

    函数是Python中的一等公民。您可以将函数作为参数传递: def iterateseed, num, fct: # ^^^ x = seed orbit = [x] for i in rangenum:

  • 有条件地显示和隐藏表单字段并设置字段值

    您可以使用表单的__init__方法隐藏(或删除)字段,即 class PersonnelFormforms.Form: """ Form for creating a new personnel. """ username = forms.RegexField required=True, max_length=30, label=

  • 推荐的持久化(自定义)自定义sklearn管道的方法是什么?

    好的,经过一番谷歌搜索之后,似乎根本原因不是酸洗,这只是一个pyinstaller“隐藏的进口”问题,但是由于某种原因,它仅在酸洗时才会显示(不要问我为什么)。 以下内容为我解决了眼前的问题:编辑.spec文件以添加以下隐藏的导入Scipy: hiddenimports=['scipy._lib.messagestream']

  • Python:从集中检索项目

    我肯定会在这里用字典。将firstname实例变量重新用作字典键不会复制它-字典将仅使用同一对象。我怀疑字典将比集合使用更多的内存。 要实际节省内存,__slots__请在类中添加一个属性。这将防止每次10,000,000实例从具有__dict__属性,这将节省更多的内存比的潜在开销dict过set。

  • 如何在Cython中的新型缓冲区对象中包装C指针和长度?

    正如@RichardHansen在他的自我回答中正确观察到的那样,您想要的是一个实现缓冲区协议的类,并具有管理内存的合适析构函数。 Cython实际上以的形式提供了一个内置的轻量级类,cython.view.array因此无需创建自己的类。它实际上a href="http:docs.cython.orgenlatestsrcuserguidememoryviews.html#cython

  • 在Windows Shell脚本(cmd.exe)中,如何将程序的标准输出分配给环境变量?

    采用: for f "delims=" %A in 'insert command here' do @set variable name=%A 例如: for f "delims=" %A in 'time t' do @set my_env_var=%A

  • 如何指定一个属性必须是(例如)整数的列表,而不仅仅是列表?

    该 语法 确实有效。但是,PEP 484添加的通用类型注释对象不在内置名称空间中,而是在typing模块中。 因此,您需要执行所

  • 在列表中查找数量递增的组

    使用itertools和numpy的几种不同方式: from itertools import groupby, tee, cycle x = [17, 17, 19, 20, 21, 22, 0, 1, 2, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 14, 14, 28, 29, 30, 31, 32, 33, 34, 35, 36, 1, 2, 3, 4,

  • 在哪里可以找到PythonMagick文档?

    我认为它不再活跃了。- 看这里

  • 停止运行无限循环的python线程

    我认为您错过了该文档的 “线程本身必须定期检查stopped()条件” 位。 您的线程需要像这样运行: while not self.stopped: # do stuff 而不是while true。请注意,当它检查条件时,它仍只会在循环的“开始”处退出。如果该循环中的任何内容长时间运

  • 密密麻麻的袖扣:启动袖扣配置选项

    我认为问题是在iplot调用中设置了文件名参数。 df.iplotkind='bar', barmode='stack' a href="http:nbviewer.jupyter.orgg

  • 用Python计算分布中随机变量的概率

    所有这些都非常相似:如果可以使用函数来计算#1 cdfx,那么对#2的解决方案1 - cdfx就很简单,对于#3来说,解决方案就是cdfx - cdfy。 由于Python包含自2.7版以来内置的(gauss)错误函数,因此您可以通过使用a href="http:en.wikipedia.orgwikiNormal_distr

  • 可能带有浮点数的``a

    它取决于浮点格式,尤其取决于它是否具有逐渐下溢的趋势。IEEE 754二进制浮点可以。这意味着即使在极端情况下只能用一个有效位来表示两个不同的浮点数之间的间隙始终不为零。 两个不同的浮点数之间最小的绝对差值都带有等号(或数字之一),零指数和有效数相差1。在这种情况下,将较小的值减去较大的

  • 为什么CPython不将`sphinx.autodoc`用于标准库?[关闭]

    这主要是历史问题,也是个人(和项目)偏好的问题。如今,您可以通过主要依靠文档字符串来获得相当有用的文档,然后在它们周围添加其他散文。 但是,CPython的文档早于Sphinx的存在(事实上,Georg Brandl编写了Sphinx的初始版本以替代CPython的旧文档系统)。 因此,从政策上讲,文档字符串和散文文档仍然单独维护,而不依赖于使用autodoc。 我们也 不会

  • 熊猫情节栏订购类别

    有2种可能的解决方案-更改index绘图之前的顺序-通过reindex或loc: df.CatVar.value_counts.reindex

  • 在清理之前修改传入Django表单的数据

    您可以压缩if elifelse上一行很轻松地: def __init__self, *args, **kwargs: data = args[0] if args else kwargs.get'data', None if data: data['content'] = ' '.join

  • Python-获得字符串之间的区别

    a = 'testing this is working \n testing this is working 1 \n' b = 'testing this is working \n testing this is working 1 \n testing this is working 2' splitA = seta.split"\n" splitB = setb.split"\n" diff = sp

  • 在__init__中定义成员与在python中的类主体中定义成员之间的区别?

    class a: def __init__self: self.val=1 这会创建一个类(在Py2中,是一个粗鲁的,遗留的,旧式的, 不要那样做! 类;在Py3中,讨厌的旧遗留类最终消失了,所以这将是一个唯一的类- -* good 类型,class aobject:在Py

  • 二进制减法-Python

    简短答案: 当s1[i] == s2[i]和时,您的代码是错误的carry == 1。 较长的答案: 你应该调整你的代码有三个独立的情况下s==-1,s==0和s==1,然后分支上的价值carry每种情况中:

  • 用Python口头格式化数字

    在python核心中没有,但是有3rd party库num2words from num2words import num2words num2words1e25 'ten septillion, one billion,

  • 软件包“ Tk”的版本冲突:拥有8.5.2,恰好需要8.5.15

    步骤1:打开C:\ Python27 \ tcl \ tcl8.5 \ init.tcl if {[info commands package] == ""} { error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlev

  • 与熊猫自我加入

    join 与 on='i' d.joind.drop'i', 1, on='i', rsuffix='_y' some_col i some_col_y 0 A 2 C 1 B 1 B 2 C 1 B

  • 列出所有当前打开的文件句柄?[重复]

    这样做的 好 方法是修改代码以跟踪打开文件的时间: def log_open *args, **kwargs : print "Opening a file..." print *args, **kwargs return open *args, **kwargs 然后,使用log_opencod

  • numpy中的矩阵索引

    索引后查看形状: In [295]: A=np.matrix[1,2,3] In [296]: A.shape Out[296]: 1, 3 In [297]: A[0] Out[297]: matrix[[1, 2, 3]] In [298]: A[0].shape Out[298]: 1, 3 此行为的关键np.matrix是始终

  • Python Pandas:数据透视表:aggfunc串联而不是np.size或np.sum

    您可以agg在后面使用函数groupby: df.groupby['name', 'age']['phonenumber'].\ agg{'phonecount': pd.Series.nunique, 'phonenumber': lambda x: ','.joinx } #

  • MySQLdb的结果集非常慢

    PHPMyAdmin限制了所有查询,因此您不会在界面中返回较大的结果集。因此,如果您的查询通常返回1,000,000行,而PHPMyAdmin将其减少到1,000(或默认值),那么当Python抓取甚至查询整个结果集时,您将不得不期望更长的处理时间。 尝试在Python中放置一个与PHPMyAdmin上的限制匹配的限制以比较时间。

  • python中的原始性测试[重复]

    简而言之,您将isprimex检查数字是否为奇数,然后在之后退出if x % 2 == 0。 尝试进行一些小的更改,以便您实际上可以迭代: def isprimex: for i in range2, x-1: if x % i == 0: return False else: