gpt4 book ai didi

计算列表中特定邻居的 Pythonic 方法

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:39 26 4
gpt4 key购买 nike

我有一个 list 。例如:

[0, 0, 1, 0, 0, 1, 0]

我想知道计算 1 -> 0 转换的最有效方法是什么。在这种情况下,例如答案是 2(在 2-3 和 5-6 位置)

我尝试了以下方法:

 stat=[0, 0, 1, 0, 0, 1, 0]
pair1=stat[:-1]
pair2=stat[1:]
result=len([i for i in zip(pair1, pair2) if i==(1,0)])

请问有没有更好的办法

最佳答案

这里有3种方式:

from itertools import islice
import numpy as np

lst = [0, 0, 1, 0, 0, 1, 0]

res1 = sum(i - j == 1 for i, j in zip(lst, lst[1:])) # 2

res2 = sum(i - j == 1 for i, j in zip(lst, islice(lst, 1, None))) # 2

res3 = np.sum(np.diff(lst) == -1) # 2

解释

  1. 第一种方法使用带有生成表达式的 sumzip 循环成对元素。
  2. 第二种方法与第一种方法类似,但性能更好,因为它避免了显式构建第二个列表。
  3. 第三种方法利用第 3 方 numpy 库,是一种矢量化方法。

关于计算列表中特定邻居的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49680611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com