小编MSe*_*ert的帖子

附加列表中的 Python 递归

我想递归地附加到一个列表,但我无法想出一个有效的函数。该函数接受两个参数timesdatatimes应该是附加数据的次数。

到目前为止,这是我的代码:

def replicate_recur(times, data):
    result2 = []
    if times == 0:
        result2.append(data)
    else:
        result2.append(data)
        replicate_recur(times - 1, data)
    return result2
Run Code Online (Sandbox Code Playgroud)

python recursion list

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

当键是元组时搜索字典键

sample = {('red', 'blue', 'purple') : 'color', 'redo' : 'again', 'bred' : 'idk', 'greeting' : ('hi', 'hello')}

def search(c):
    if c in sample.keys():
        return sample[c]

print(search('red'))
Run Code Online (Sandbox Code Playgroud)

这返回None. 我知道我可以将它们分开并制作具有相同值的多个键,但如果可以的话,我真的很想避免这样做。我可以吗?

而且我还希望能够搜索值(也可能是元组)并获得相应的键。

python dictionary python-3.x

5
推荐指数
2
解决办法
1550
查看次数

双循环的迭代计数器

我试图找到计算这个双for循环的每次迭代的公式(例如在 python 中):

for i in range(5):
   for j in range(5):
       count = MYSTERIOUS_FORMULA
       print count
Run Code Online (Sandbox Code Playgroud)

这里 count 的最终值应该是 25。

我试过,count=(i+1)*j但它产生0,1,2,3,4,0,2,4等。

python algorithm nested-loops

5
推荐指数
2
解决办法
7523
查看次数

用元类继承类字典

我正在fields使用元类设置类属性:

class MyMeta(type):
    def __new__(mcs, name, bases, clsdict):

        clsdict['fields'] = {k: v
                             for k, v in clsdict.items()
                             if <my_condition>}
        return super(MyMeta, mcs).__new__(mcs, name, bases, clsdict)

class MyBaseClass(metaclass=MyMeta):
    fields = {}
Run Code Online (Sandbox Code Playgroud)

以下实例化导致预期结果:

class SubClass(MyBaseClass):
    param1 = 1 # meets <my_condition>

>>> SubClass.fields
{param1: 1}
Run Code Online (Sandbox Code Playgroud)

但如果我现在子类SubClass,fields是空的:

class SubSubClass(SubClass):
   pass

>>> SubSubClass.fields 
{}
Run Code Online (Sandbox Code Playgroud)

我如何能够更新继承层次结构中所有类的 classdict 以便fields从基类更新变量?

python inheritance metaclass python-3.x

5
推荐指数
1
解决办法
636
查看次数

如何从numpy数组中获取两个最小值

我想从数组中获取两个最小值x。但是当我使用时np.where

A,B = np.where(x == x.min())[0:1]
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ValueError:需要多个值才能解压

如何解决此错误?我是否需要在数组中按升序排列数字?

python arrays numpy

5
推荐指数
1
解决办法
2639
查看次数

numpy.array(list) 很慢

所以我有一个包含 5,000,000 个整数的列表。我想将列表覆盖到 numpy 数组中。我尝试了以下代码:

numpy.array( list )
Run Code Online (Sandbox Code Playgroud)

但速度非常慢。

我对该操作进行了 100 次基准测试,并对列表进行了 100 次循环。没有太大区别。

有什么好主意如何让它更快吗?

arrays performance numpy list

5
推荐指数
1
解决办法
2831
查看次数

切片Dask数据框

我有以下代码,我想在Dask数据帧上进行训练/测试拆分

df = dd.read_csv(csv_filename, sep=',', encoding="latin-1",
                     names=cols, header=0, dtype='str') 
Run Code Online (Sandbox Code Playgroud)

但是当我尝试做像

for train, test in cv.split(X, y):
    df.fit(X[train], y[train])
Run Code Online (Sandbox Code Playgroud)

它因错误而失败

KeyError: '[11639 11641 11642 ..., 34997 34998 34999] not in index'
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

python dataframe dask

5
推荐指数
1
解决办法
1414
查看次数

导入错误:无法导入名称 mpl(从 matplotlib 导入 mpl)

我正在尝试运行我几年前编写的使用mplfrom 的代码matplotlib。它曾经运行良好,但现在突然出现错误:

from matplotlib import mpl
ImportError: cannot import name mpl
Run Code Online (Sandbox Code Playgroud)

我正在使用 Python 2.7 和 matplotlib 1.5.2。

python matplotlib importerror python-2.7

5
推荐指数
1
解决办法
9579
查看次数

从列表中随机选择一对不同的项目

码:

import random

x = ['A','B','C','D','E','F',
     'G','H','I','J','K','L',
     'M','N','O','P','Q','R',
     'S','T','U','V','W','X',
     'Y','Z']

y1 = random.sample(x, 2)
y2 = random.sample(x, 2)
y3 = random.sample(x, 2)
y4 = random.sample(x, 2)
y5 = random.sample(x, 2)
Run Code Online (Sandbox Code Playgroud)

询问

如上所示,我选择5个随机样本组合,并在变量下声明它们y'x'

为了改善我的代码,我想这样做,但是要确保列表中的项目在所有变量输出中出现的次数都不会超过一次,在这些变量输出中,所有组合都是不同且非重复的。我最好实现此目的而不必从列表中删除项目,因为它稍后会在代码中重用。

预期输出(示例):

>>> y1
['A', 'Q']
>>> y2
['E', 'K']
>>> y3
['C', 'O']
>>> y4
['Z', 'X']
>>> y5
['P', 'L']
Run Code Online (Sandbox Code Playgroud)

python random list python-2.7

5
推荐指数
1
解决办法
1497
查看次数

random.shuffle 如何导致 KeyError?

我刚刚收到错误:

Traceback (most recent call last):
  File "./download_documents.py", line 153, in <module>
    paragraphs, used_pages = find_pages(lang, to_extract)
  File "./download_documents.py", line 67, in find_pages
    random.shuffle(page_titles_queue)
  File "/usr/lib/python2.7/random.py", line 291, in shuffle
    x[i], x[j] = x[j], x[i]
KeyError: 1
Run Code Online (Sandbox Code Playgroud)

这让我很困惑。

  1. random.shuffle 似乎适用于零元素列表和单元素列表。
  2. page_titles_queue 是元组列表。
  3. 之后的两行random.shuffle(page_titles_queue),有page_titles_queue.pop(),但这不应该影响洗牌。对?

那么 KeyError 的可能原因是什么?

Python 2.7.12在 Ubuntu 16.04 上使用。

python random shuffle python-2.7 keyerror

5
推荐指数
1
解决办法
3726
查看次数