相关疑难解决方法(0)

"yield"关键字有什么作用?

yieldPython中关键字的用途是什么?它有什么作用?

例如,我试图理解这段代码1:

def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild  
Run Code Online (Sandbox Code Playgroud)

这是来电者:

result, candidates = [], [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
    candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
return result
Run Code Online (Sandbox Code Playgroud)

_get_child_candidates调用该方法时会发生什么?列表是否返回?单个元素?它又被召唤了吗?后续通话何时停止?


1.代码来自Jochen Schulz(jrschulz),他为度量空间创建了一个很棒的Python库.这是完整源代码的链接:模块mspace.

python iterator yield generator coroutine

9664
推荐指数
46
解决办法
212万
查看次数

迭代列表切片

我想要一个算法迭代列表切片.切片大小设置在功能之外,可以有所不同.

在我看来它是这样的:

for list_of_x_items in fatherList:
    foo(list_of_x_items)
Run Code Online (Sandbox Code Playgroud)

有没有办法正确定义list_of_x_items或使用python 2.5执行此操作的其他方法?


edit1:澄清 "分区"和"滑动窗口"这两个术语听起来都适用于我的任务,但我不是专家.所以我会更深入地解释这个问题并添加到问题中:

fatherList是我从文件中获取的多级numpy.array.函数必须找到系列的平均值(用户提供系列的长度)平均我正在使用该mean()函数.现在进行问题扩展:

edit2:如何修改你提供的函数来存储额外的项目,并在下一个fatherList被输入函数时使用它们?

例如,如果列表长度为10且块的大小为3,则列表的第10个成员将被存储并附加到下一个列表的开头.


有关:

python iteration loops slice

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

Python基于分隔符单词拆分列表

我有一个包含各种字符串值的列表.每当我看到,我想拆分列表WORD.结果将是一个列表列表(将是原始列表的子列表),其中只包含一个WORD我可以使用循环执行此操作的实例,但是有更多的pythonic方法可以实现此目的吗?

示例= ['A', 'WORD', 'B' , 'C' , 'WORD' , 'D']

结果= [['A'], ['WORD','B','C'],['WORD','D']]

这是我尝试过但它实际上没有达到我想要的,因为它将放入WORD一个应该在的不同列表:

def split_excel_cells(delimiter, cell_data):

    result = []

    temp = []

    for cell in cell_data:
        if cell == delimiter:
            temp.append(cell)
            result.append(temp)
            temp = []
        else:
            temp.append(cell)

    return result
Run Code Online (Sandbox Code Playgroud)

python split list

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

在任意索引处有效地分区字符串

给定一个任意字符串(即,不基于模式),请说:

>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
Run Code Online (Sandbox Code Playgroud)

我试图基于索引列表分区字符串.

这是我尝试过的,它确实有效:

import string

def split_at_idx(txt, idx):
    new_li=[None]*2*len(idx)
    new_li[0::2]=idx
    new_li[1::2]=[e for e in idx]
    new_li=[0]+new_li+[len(txt)]
    new_li=[new_li[i:i+2] for i in range(0,len(new_li),2)]  
    print(new_li)
    return [txt[st:end] for st, end in new_li]

print(split_at_idx(string.ascii_letters, [3,10,12,40]))  
# ['abc', 'defghij', 'kl', 'mnopqrstuvwxyzABCDEFGHIJKLMN', 'OPQRSTUVWXYZ']
Run Code Online (Sandbox Code Playgroud)

拆分基于索引列表[3,10,12,40].然后需要将此列表转换为开始,结束对的列表[[0, 3], [3, 10], [10, 12], [12, 40], [40, 52]].我使用切片分配来设置平均值和赔率,然后将列表理解分组成对,并使用第二个LC来返回分区.

对于这样一个简单的函数来说,这似乎有点复杂.有没有更好/更有效/更惯用的方式来做到这一点?

python string idioms python-3.x

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

python字符串用分隔符分割所有可能的排列

这可能与Python 3.3: Split string and create all Combinations类似的问题密切相关,但我无法从中推断出 pythonic 解决方案。

问题是:

假设有一个诸如 的 str 'hi|guys|whats|app',我需要用分隔符分割该 str 的所有排列。例子:

#splitting only once
['hi','guys|whats|app']
['hi|guys','whats|app']
['hi|guys|whats','app']
#splitting only twice
['hi','guys','whats|app']
['hi','guys|whats','app']
#splitting only three times
...
etc
Run Code Online (Sandbox Code Playgroud)

我可以编写一个回溯算法,但是Python(例如itertools)是否提供了一个简化该算法的库?

提前致谢!!

python string split permutation

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

根据 Python 中的一组索引将列表拆分为子列表

我有一个类似于下面的列表

['a','b','c','d','e','f','g','h','i','j']
Run Code Online (Sandbox Code Playgroud)

我想用索引列表分开

[1,4]
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它将是

[['a'],['b','c'],['d','e','f','g','h','i','j']]
Run Code Online (Sandbox Code Playgroud)

作为

[:1] =['a']

[1:4] = ['b','c']

[4:] = ['d','e','f','g','h','i','j']
Run Code Online (Sandbox Code Playgroud)

情况 2:如果索引列表是

[0,6]
Run Code Online (Sandbox Code Playgroud)

这将是

[[],['a','b','c','d','e'],['f','g','h','i','j']]
Run Code Online (Sandbox Code Playgroud)

作为

[:0] = []

[0:6] = ['a','b','c','d','e']

[6:] = ['f','g','h','i','j']
Run Code Online (Sandbox Code Playgroud)

情况 3 如果索引是

[2,5,7]
Run Code Online (Sandbox Code Playgroud)

它将是 [['a','b'],['c','d','e'],['h','i','j']] 作为

[:2] =['a','b']
[2:5] = ['c','d','e']
[5:7] = ['f','g']
[7:] = ['h','i','j']
Run Code Online (Sandbox Code Playgroud)

python

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

如何在python中替换字符串中的字符

如何替换我们知道python中的确切索引的字符串中的字符?

例如:name ="ABCDEFGH"我需要将所有奇数索引位置字符更改为"$"字符.

    name = "A$C$E$G$"
Run Code Online (Sandbox Code Playgroud)

(从0开始考虑指数bigin)

python

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