私信  •  关注

a_guest

a_guest 最近创建的主题
a_guest 最近回复了
4 年前
回复了 a_guest 创建的主题 » 迭代列表中的每两个元素以执行列表python的某些操作

您可以创建一个迭代器,然后自行压缩它:

def pairwise(iterable):
    return zip(*[iter(iterable)]*2)

def pairwise(iterable):
    i = iter(iterable)
    return zip(i, i)
5 年前
回复了 a_guest 创建的主题 » python:类内的字典理解[复制]

因为最外层的迭代器是在周围的作用域中计算的,所以我们可以使用 zip 一起 itertools.repeat 将依赖关系转移到理解的范围:

import itertools as it

class Foo:
    x = 5
    y = [j for i, j in zip(range(3), it.repeat(x))]

也可以使用嵌套 for 在理解中循环,并在最外层iterable中包含依赖项:

class Foo:
    x = 5
    y = [j for j in (x,) for i in range(3)]

对于op的具体示例:

from collections import namedtuple
import itertools as it

class StateDatabase:
    State = namedtuple('State', ['name', 'capital'])
    db = [State(*args) for State, args in zip(it.repeat(State), [
        ['Alabama', 'Montgomery'],
        ['Alaska', 'Juneau'],
        # ...
    ])]
5 年前
回复了 a_guest 创建的主题 » 如何在不删除python中元素索引的情况下删除元素

你可以用 collections.Counter :

>>> from collections import Counter
>>> sorted(Counter(numbers).items(), key=lambda x: x[1], reverse=True)[:3]
[(3, 4), (5, 3), (2, 3)]
  ^  ^
  |  |
number
     |
   count

这将返回数字及其计数。如果您想要百分比,那么您可以稍后进行转换。