小编Ber*_*rdL的帖子

`for`循环使用生成器,如果用尽则返回不同的值

我循环遍历一个itertools.permutation对象,为了提高效率,一旦找到该项,循环就会中断.我明白,因为我使用了for循环,StopIteration当生成器耗尽且找不到项目时,我无法捕获错误.

到目前为止,我已经实施了found一面旗帜,但它看起来有点像黑客.

from itertools import permutations

def verify_string(name, compare):
    name = name.lower().split()
    compare = compare.lower().split()
    p = permutations(compare, len(compare))
    found = 0

    for i in p:
        if list(i) == name:
            print(f'Found: {compare} in {name}')
            found = 1
            break

    if not found:
        print('Not Found')

name = 'guido van rossum'
compare = 'van guido rossum'

verify_string(name, compare)
>>Found: ['van', 'guido', 'rossum'] in ['guido', 'van', 'rossum']
Run Code Online (Sandbox Code Playgroud)

我也想过检查if not next(p, ''),看它是否已耗尽,但该项目可能会在生成的最后一个项目找到,将返回True反正.

从Pythonic视图中,是否有一种方法可以管理生成器上的循环,该生成器 …

python for-loop generator python-3.x

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

迭代在Python中包含元组和int的列表

所以我创建了这个列表:

l = [(1,2,3),(4,5),6]
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时:

for i in l:
    print (i[0])
Run Code Online (Sandbox Code Playgroud)

它发送给我这个错误信息:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
TypeError: object of type 'int' has no len()
Run Code Online (Sandbox Code Playgroud)

所以我想知道你是否有一种方法来打印数字,如果它是一个int或第一个元素,如果它是tuple...

我希望我为你说清楚,不要犹豫,问你是否理解.

先感谢您.

python loops tuples list

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

Pandas DataFrame 子字符串匹配不起作用

我的数据框包含我只想显示某些发件人的发件人姓名。数据框中的列名称是发件人。

1                                         Tin, Heather-LK
2                                         Wong, Wan Sing
3                                     Employee Engagement
4                                           Loh, Kelly-KK
5                           EXCHANGE ADMINISTRATIVE GROUP
6                                               CorpComms
7                                            Loo Wai Long
8                                         Tang, Heather-L
9                                                  Oracle
Run Code Online (Sandbox Code Playgroud)

代码

df[df.Sender.str.contains('Tin', na=False)]
Run Code Online (Sandbox Code Playgroud)

结果是一个空白的数据框。我不明白字符串属性包含我正在寻找的部分。

以下是数据框的信息

1378
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1378 entries, 0 to 1377
Data columns (total 4 columns):
Sender           1375 non-null object
Content          1378 non-null object
Received Time    1378 non-null object
Replied Time     189 non-null object
dtypes: object(4)
memory usage: 53.8+ KB
Run Code Online (Sandbox Code Playgroud)

如果我自己重建框架,它就可以工作。但似乎无法让它处理我通过 Outlook MAPI 提取的原始数据。

python string pandas

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

在递归函数中明确发生了什么?

我理解递归到某个级别的概念,但我无法理解递归调用中发生的所有步骤.

例如:

def fact(n):
    if n == 0:
        return 1
    else:
        print('{} is not 0, so fact({}) = {} * fact({})'.format(n,n,n,n-1))
        return n * fact(n-1)

answer = int (input('Enter some number: '))
print(fact(answer))

>> Enter some number: 5
5 is not 0, so fact(5) = 5 * fact(4)
4 is not 0, so fact(4) = 4 * fact(3)
3 is not 0, so fact(3) = 3 * fact(2)
2 is not 0, so fact(2) = 2 * fact(1)
1 is …
Run Code Online (Sandbox Code Playgroud)

python recursion

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

列表切片,如果列表长度为1,则获取最后一项

我知道如果我这样做:

>> a = [1,2,3,4]
>> a[:-1]

Output:  [1,2,3]
Run Code Online (Sandbox Code Playgroud)

但:

>> a = [1]
>> a[:-1]

Output:  []
Run Code Online (Sandbox Code Playgroud)

虽然在这种情况下,第一个是最后一个,反之亦然 如果列表长度为1,如何选择最后一项?

python list slice

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

标签 统计

python ×5

list ×2

for-loop ×1

generator ×1

loops ×1

pandas ×1

python-3.x ×1

recursion ×1

slice ×1

string ×1

tuples ×1