小编Jim*_*ard的帖子

__sizeof__没有被sys.getsizeof调用

我正在用Python写一个动态数组实现(类似于内置列表类),为此我需要观察容量的增长(每次达到限制时都会增加一倍).为此,我有以下代码,但输出很奇怪.看起来好像sys.getsizeof()永远不会叫我的班级__sizeof__().出于测试目的,我正在进行__sizeof__()返回0,但是根据sys.getsizeof()它是非零的.

有什么收获?

import ctypes

class DynamicArray(object):
    '''
    DYNAMIC ARRAY CLASS (Similar to Python List)
    '''

    def __init__(self):
        self.n = 0 # Count actual elements (Default is 0)
        self.capacity = 1 # Default Capacity
        self.A = self.make_array(self.capacity)

    def __len__(self):
        """
        Return number of elements sorted in array
        """
        return self.n

    def __getitem__(self,k):
        """
        Return element at index k
        """
        if not 0 <= k <self.n:
            return IndexError('K is out of bounds!') …
Run Code Online (Sandbox Code Playgroud)

python class python-3.x

3
推荐指数
1
解决办法
308
查看次数

两个方括号并排:奇怪的效果

我在一个竞争激烈的编程网站上,发现一个人写了这个奇怪的(对我来说)Python 3代码:

[r,"Nothing"][r==""]
Run Code Online (Sandbox Code Playgroud)

它输出'Nothing',如果r是空字符串.

这怎么称呼它是什么意思?它看起来像一个三元运算符.

python python-3.x

3
推荐指数
1
解决办法
202
查看次数

未解决的参考MagicMock

我想在Python测试中模拟一个方法。为了做到这一点,我需要MagicMock,我试图像这样导入它:

from unittest import TestCase
from unittest.mock import MagicMock
Run Code Online (Sandbox Code Playgroud)

即使我在PyCharm中单击几次安装后,尽管在“首选项/项目解释器”下看到了magicmock 0.0.3,但仍然收到此错误:

 from unittest.mock import MagicMock
 ImportError: No module named mock
Run Code Online (Sandbox Code Playgroud)

我在这里看到的导入声明。我怎么了

python python-3.x magicmock

2
推荐指数
1
解决办法
917
查看次数

基于公共元组元素组合元组列表

考虑两个元组列表:

data1 = [([X1], 'a'), ([X2], 'b'), ([X3], 'c')]
data2 = [([Y1], 'a'), ([Y2], 'b'), ([Y3], 'c')]
Run Code Online (Sandbox Code Playgroud)

哪里 len(data1) == len(data2)

每个元组包含两个元素:

  1. 一些字符串列表(即[X1])
  2. 一个常见的元素data1data2:字符串'a','b'等等.

我想将它们组合成以下内容:

[('a', [X1], [Y1]), ('b', [X2], [Y2]),...]
Run Code Online (Sandbox Code Playgroud)

有谁知道我怎么做到这一点?

python list

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

如何转换为Python列表理解

ls = ['abc', 56, 49, 63, 66, 80]
for i in ls:
    if(isinstance(i, int) or isinstance(i, float)):
        for i in range(len(ls)):
            ls[i] = str(ls[i])
Run Code Online (Sandbox Code Playgroud)

我可以知道如何创建上面代码的列表理解吗?

我正在尝试以下但不工作

if (s for s in ls isinstance(s, int) or isinstance(s, float)):
    for i in range(len(ls)):
        ls[i] = str(ls[i])
Run Code Online (Sandbox Code Playgroud)

python list for-comprehension python-3.x

2
推荐指数
1
解决办法
1533
查看次数

只打印字符串中的元音

我是 Python 新手,我正在尝试打印字符串中的所有元音。所以如果有人输入“嘿,一切都好吗?” ,所有元音都需要打印...但我不知道如何?(所以这不是关于计算元音,而是关于打印元音)

现在我有这个;

sentence = input('Enter your sentence: ' )

if 'a,e,i,o,u' in sentence:
    print(???)

else:
    print("empty")
Run Code Online (Sandbox Code Playgroud)

python printing string python-3.x

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

这些变量是什么?

我知道可能这个问题可能会因为它的特殊性而得到一些负面影响而且可能听起来很愚蠢.但我对Python的语法很新,我甚至不确定"变量"是否是答案的一部分.所以,请冷静:)

我在Github 上看这个Repository.

在这里,我在某些线条上看到了一些奇怪的东西(例如57,89等等). 作者提出了一些下划线,并在他们后面加了一些逗号.虽然我不知道它们是什么意思:

_, _, param1, params, _, _, expr, _ , app = node
Run Code Online (Sandbox Code Playgroud)

据我所知,放置多个变量的语法是:

var1, var2 ,var3 = 1, 2, "3"
Run Code Online (Sandbox Code Playgroud)

但是在这一点上我不知道会发生什么,因为简单的下划线不被认为是变量,特别是当它们被多次使用时(或者它们是什么?)并且git存储库中的语法不遵循上面的规则.

我搜索了Python的一些语法备忘单,但这与任何内容都不匹配.所以我想得到你们中的一些人的帮助.谢谢

- 我的经验仅限于C/C++/C#/ Java/Javascript [...]

python syntax python-2.7 python-3.x

2
推荐指数
1
解决办法
54
查看次数

循环内可调用变量的限制

一个非常简单的例子:

n=1
a=n
x=1
y=a+1
while (y-x) <10:
    n+=1
    print(x,y)
    print(n,a)
Run Code Online (Sandbox Code Playgroud)

这将进入一个无限循环:

x= 1 y= 2
n= 2 a= 1
x= 1 y= 2
n= 3 a= 1
x= 1 y= 2
n= 4 a= 1
x= 1 y= 2
n= 5 a= 1
x= 1 y= 2
n= 6 a= 1
x= 1 y= 2
n= 7 a= 1
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,n循环正在更新并且可以调用,但是a没有更新到更新的n值.我想知道为什么会这样.如果y是这样的话也是如此n+1.

python while-loop python-3.x

2
推荐指数
1
解决办法
40
查看次数

AttributeError:模块'pygal'没有属性'Worldmap'

我试着:

import pygal
wm = pygal.Worldmap()
Run Code Online (Sandbox Code Playgroud)

但它引起了:

AttributeError: module 'pygal' has no attribute 'Worldmap'
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这是什么问题?

python python-3.x pygal

2
推荐指数
1
解决办法
2554
查看次数

mypy错误:作为namedtuple()的第二个参数的list或tuple literal

我写了一个代码python 3.5,看起来像这样:

from collections import namedtuple

attributes = ('content', 'status')
Response = namedtuple('Response', attributes)
Run Code Online (Sandbox Code Playgroud)

然后我运行mypy类型检查器来分析这段代码.mypy提出这个错误:

test.py:4:error:作为第二个参数的List或tuple literal namedtuple()

我试图在attributes变量中添加一个类型注释:

from typing import Tuple
attributes = ('content', 'status')  # type: Tuple[str, str]
Run Code Online (Sandbox Code Playgroud)

但它没有帮助修复引发的错误.

我该怎么做才能纠正这个错误?谢谢.

python typing type-hinting python-3.x mypy

2
推荐指数
1
解决办法
816
查看次数