小编kup*_*gov的帖子

Python:同时使用多个键值对进行字典理解

目标:表达的工作模拟

{k1: v1, k2: v2 for k1, k2, v1, v2 in data}
Run Code Online (Sandbox Code Playgroud)

或更具体的情况{k1: v, k2: v for k1, k2, v, _ in data}

data仅迭代1 次(在给定的示例中data是 4 元组的可迭代对象)。

(以及关于列表理解的类似问题,例如[myfunc1(v1), myfunc2(v2) for v1, v2 in data])。

我只能假设使用自己的迭代器的解决方案:

def getby(iterable_data, iterable_indexes):
    for indexed_data in iterable_data:
        for tupl in iterable_indexes:
            yield tuple(indexed_data[ind] for ind in tupl)
    raise StopIteration
Run Code Online (Sandbox Code Playgroud)

工作示例:list(getby([('a', 'b', 'c'), ('d', 'e', 'f', 'g')], [(0, 1), (2, 1)]))return [('a', 'b'), ('c', 'b'), ('d', …

python list-comprehension python-3.x dictionary-comprehension

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

如何使用列表推导与可变数量的文件名列表?

给出文件名列表filenames = [...].

是否可能重写I/O安全的下一个列表理解:[do_smth(open(filename, 'rb').read()) for filename in filenames]?使用with语句,.close方法或其他东西.

另一个问题是:是否可能为下一个代码编写I/O安全列表理解?

results = []
for filename in filenames:
   with open(filename, 'rb') as file:
      results.append(do_smth(file.read()))
Run Code Online (Sandbox Code Playgroud)

python file-io list-comprehension contextmanager python-3.x

4
推荐指数
1
解决办法
119
查看次数

最后获得成对迭代器和附加项

目标:例如,给定有限迭代器p0, p1, ..., pn转换为(p0, p1), (p1, p2), ..., (pn-1, pn), (pn, None)- 迭代器通过成对的具有特殊最后项的连续项.

pairwise()函数存在于文档中作为itertools用法示例:

def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return zip(a, b)
Run Code Online (Sandbox Code Playgroud)

但是我想另外在迭代器的末尾添加另一个项目(如果它是有限的),并且对第二个元素的某个默认值(例如,None).

如何有效地实现这个附加功能?

python iterator python-itertools python-3.x

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

Python:如何捕获异常链的内部异常?

考虑一个简单的例子:

def f():
    try:
        raise TypeError
    except TypeError:
        raise ValueError

f()
Run Code Online (Sandbox Code Playgroud)

我想在执行后抛出TypeError对象.有可能吗?ValueErrorf()

如果我执行函数f()然后python3打印到stderr所有异常链异常链(PEP-3134)就像

Traceback (most recent call last):
  File "...", line 6, in f
    raise TypeError
TypeError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "...", line 11, in <module>
    f()
  File "...", line 8, in f
    raise ValueError
ValueError
Run Code Online (Sandbox Code Playgroud)

所以我会得到异常链的所有异常列表检查异常链中是否存在某种类型的异常(TypeError在上面的例子中).

python exception-handling python-3.x

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

N维和(Nk)维numpy数组的“小于/大于”比较

给定两个数组a=np.array([[1, 3], [3, 4]])b=np.array([2, 2])

目标:np.array([False, True])通过类似的操作获取数组a>b。即比较行(True 如果每对要素的满足>运营商其他False),而不是按元素比较(即我希望GET np.array([[False, True], [True, True]]))。

对于3-D和(可选)N维数组,也是如此。例如

a1 = np.array([[[1, 2, 1], [2, 3, 2]], [[3, 4, 3], [4, 3, 4]]])
b1 = np.array([1, 1, 1])
Run Code Online (Sandbox Code Playgroud)

操作就像a1 > b1必须返回np.array([[False, True], [True, True]])

怎么做?

python arrays compare numpy python-3.x

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