gpt4 book ai didi

Python:计数直到列表中的元素是元组

转载 作者:太空宇宙 更新时间:2023-11-03 12:12:07 24 4
gpt4 key购买 nike

我有一个这样的列表:

MyList = [2,3,(1,2),5]

其中元素 0、1 和 3 是整数,而元素 2 是元组。我想创建一个计数器,它告诉我列表中有多少元素在元组出现之前。在示例中,我想要一个取值 2 的计数器(第一个元组之前的 2 个元素,2 和 3)。我尝试了以下方法:

counter = 0
while MyList[counter] is not tuple:
counter = counter + 1

但它不起作用,因为当它评估语句“(1,2) 不是元组”而不是引发 False 时,它​​会继续取值 True。知道问题可能是什么以及如何解决它吗?谢谢。

最佳答案

您可以使用for 循环和break:

counter = 0
for elem in MyList:
if isinstance(elem, tuple):
break
counter += 1

或者,使用 enumerate():

for counter, elem in enumerate(MyList):
if isinstance(elem, tuple):
break

# counter *could* be unbound if `MyList` is empty

或者你可以使用 itertools.takewhile() :

from itertools import takewhile

counter = sum(1 for elem in takewhile(lambda e: not isinstance(e, tuple), MyList))

后一种方法的演示:

>>> from itertools import takewhile
>>> MyList = [2,3,(1,2),5]
>>> sum(1 for elem in takewhile(lambda e: not isinstance(e, tuple), MyList))
2

关于Python:计数直到列表中的元素是元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21329354/

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