小编wim*_*wim的帖子

将列表拆分为大约相等长度的N个部分

将列表划分为大致相等的部分的最佳方法是什么?例如,如果列表有7个元素并将其拆分为2个部分,我们希望在一个部分中获得3个元素,而另一个应该具有4个元素.

我正在寻找像even_split(L, n)这样的东西L分成n几部分.

def chunks(L, n):
    """ Yield successive n-sized chunks from L.
    """
    for i in xrange(0, len(L), n):
        yield L[i:i+n]
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了3个块,而不是3个块.我可以简单地转置(迭代它并获取每列的第一个元素,调用第一部分,然后取第二部分并将其放入第二部分等),但这会破坏项目的顺序.

python list chunks

134
推荐指数
15
解决办法
13万
查看次数

通过键列表访问嵌套的字典项?

我有一个复杂的字典结构,我想通过一个键列表访问,以解决正确的项目.

dataDict = {
    "a":{
        "r": 1,
        "s": 2,
        "t": 3
        },
    "b":{
        "u": 1,
        "v": {
            "x": 1,
            "y": 2,
            "z": 3
        },
        "w": 3
        }
}    

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

要么

maplist = ["b", "v", "y"]
Run Code Online (Sandbox Code Playgroud)

我已经制作了以下代码,但是我确信如果有人有想法,有更好更有效的方法.

# Get a given data from a dictionary with position provided as a list
def getFromDict(dataDict, mapList):    
    for k in mapList: dataDict = dataDict[k]
    return dataDict

# Set a given data in a dictionary with position provided as a list
def …
Run Code Online (Sandbox Code Playgroud)

python dictionary list

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

如何将日期时间增加一天?

如何增加日期时间?

for i in range(1, 35)
    date = datetime.datetime(2003, 8, i)
    print(date)
Run Code Online (Sandbox Code Playgroud)

但我需要正确地经历数月和数年?有任何想法吗?

python datetime

126
推荐指数
6
解决办法
14万
查看次数

python命名为字典的元组

我在python中有一个名为tuple的类

class Town(collections.namedtuple('Town', [
    'name', 
    'population',
    'coordinates',
    'population', 
    'capital', 
    'state_bird'])):
    # ...
Run Code Online (Sandbox Code Playgroud)

我想做的是将其变成字典.我承认python不是我强大的语言之一.关键是我不希望它与我所拥有的字段的名称或数字紧密相关.

有没有办法写它,以便我可以添加更多的字段,或传递一个完全不同的命名元组并获取字典.

编辑:我不能改变原来的类定义,因为它在别人的代码中.所以我需要一个城镇的实例并将其转换为字典.

python dictionary tuples namedtuple

126
推荐指数
3
解决办法
6万
查看次数

Python - 'ascii'编解码器无法解码字节

我真的很困惑.我试着编码,但错误说can't decode....

>>> "??".encode("utf8")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

我知道如何避免字符串上带有"u"前缀的错误.我只是想知道为什么在调用编码时错误是"无法解码".什么是Python在幕后做什么?

python unicode python-2.x python-2.7 python-unicode

113
推荐指数
4
解决办法
28万
查看次数

使用"not"和"in"关键字的语法顺序

在测试会员资格时,我们可以使用:

x not in y
Run Code Online (Sandbox Code Playgroud)

或者:

not y in x
Run Code Online (Sandbox Code Playgroud)

根据x和,这个表达式可能有许多可能的上下文y.例如,它可以用于子字符串检查,列表成员资格,字典密钥存在.

  • 这两种形式总是相同吗?
  • 有首选语法吗?

python syntax

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

为什么我不能在python中使用列表作为dict键?

关于什么可以/不能用作python dict的键,我有点困惑.

dicked = {}
dicked[None] = 'foo'     # None ok
dicked[(1,3)] = 'baz'    # tuple ok
import sys
dicked[sys] = 'bar'      # wow, even a module is ok !
dicked[(1,[3])] = 'qux'  # oops, not allowed
Run Code Online (Sandbox Code Playgroud)

所以一个元组是一个不可变的类型,但是如果我在其中隐藏一个列表,那么它就不能成为一个键......难道我不能轻易地隐藏模块中的列表吗?

我有一个模糊的想法,关键是必须"可以",但我只是承认自己对技术细节的无知; 我不知道这里到底发生了什么.如果您尝试使用列表作为键,将哈希作为其内存位置,会出现什么问题?

python dictionary tuples list hashable

82
推荐指数
6
解决办法
9万
查看次数

什么是数据类,它们与普通类有什么不同?

使用PEP 557,数据类被引入到python标准库中.

他们使用@dataclass装饰器,他们应该是"默认的可变的命名元组",但我不确定我理解这实际意味着什么,以及它们与普通类的区别.

究竟什么是python数据类以及何时最好使用它们?

python class python-3.7 python-dataclasses

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

使用Return语句的奇怪的Try-Except-Else-Finally行为

这是一些表现特殊的代码.这是我编写的行为的简化版本.这仍然会表现出奇怪的行为,并且我对于为什么会这样做有一些具体的问题.

我在Windows 7上使用Python 2.6.6.

def demo1():
    try:
        raise RuntimeError,"To Force Issue"
    except:
        return 1
    else:
        return 2
    finally:
        return 3

def demo2():
    try:
        try:
            raise RuntimeError,"To Force Issue"
        except:
            return 1
        else:
            return 2
        finally:
            return 3
    except:
        print 4
    else:
        print 5
    finally:
        print 6
Run Code Online (Sandbox Code Playgroud)

结果:

>>> print demo1()
3
>>> print demo2()
6
3
Run Code Online (Sandbox Code Playgroud)
  • 为什么demo 1返回3而不是1?
  • 为什么演示两次打印6而不是打印6 w/4或5?

python try-except

77
推荐指数
3
解决办法
3万
查看次数

Python的数学错误?

刚开始使用Python,所以这可能是我的错误,但......

我正在尝试使用Python.我喜欢用它作为计算器,我正在慢慢地完成一些教程.

我今天遇到了一些奇怪的事情.我想找出2013*2013,但我写了错误的东西,写了2013*013,并得到了这个:

>>> 2013*013
22143
Run Code Online (Sandbox Code Playgroud)

我用我的计算器检查了,22143是错误的答案!2013*13应该是26169.

为什么Python给我一个错误的答案?我的旧卡西欧计算器不这样做......

python math python-2.7

77
推荐指数
4
解决办法
4443
查看次数