我循环遍历一个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视图中,是否有一种方法可以管理生成器上的循环,该生成器 …
所以我创建了这个列表:
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...
我希望我为你说清楚,不要犹豫,问你是否理解.
先感谢您.
我的数据框包含我只想显示某些发件人的发件人姓名。数据框中的列名称是发件人。
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 提取的原始数据。
我理解递归到某个级别的概念,但我无法理解递归调用中发生的所有步骤.
例如:
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) 我知道如果我这样做:
>> 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,如何选择最后一项?