gpt4 book ai didi

Python:查找列表对的一个成员中的连续变化,报告其他成员

转载 作者:行者123 更新时间:2023-12-01 06:15:12 25 4
gpt4 key购买 nike

必须有一种更简单、更Pythonic的方法来做到这一点。

鉴于此对列表:

pp = [('a',1),('b',1),('c',1),('d',2),('e',2)]

如何最轻松地找到相邻对中第二个项目发生变化的第一个项目(此处从 1 变为 2)。因此我正在寻找 ['c','d']。假设整个列表的pair[1]中只有一个变化,但它可能是一个字符串。

这段代码可以工作,但看起来又长又麻烦。

for i, pair in enumerate(pp):
if i == 0:
pInitial = pair[0]
sgInitial = pair[1]
pNext = pair[0]
sgNext = pair[1]
if sgInitial == sgNext:
sgInitial = sgNext
pInitial = pNext
else:
pOne = pInitial
pTwo = pNext
x = [pOne, pTwo]
print x
break

谢谢蒂姆

最佳答案

import itertools as it

pp = [('a',1),('b',1),('c',1),('d',2),('e',2)]

# with normal zip and slicing
for a,b in zip(pp,pp[1:]):
if a[1] != b[1]:
x=(a[0],b[0])
print x
break
# with generators and izip
iterfirst = (b for a,b in pp)
itersecond = (b for a,b in pp[1:])
iterfirstsymbol = (a for a,b in pp)
itersecondsymbol = (a for a,b in pp[1:])
iteranswer = it.izip(iterfirstsymbol, itersecondsymbol, iterfirst, itersecond)

print next((symbol1, symbol2)
for symbol1,symbol2, first, second in iteranswer
if first != second)

添加了我的可读生成器版本。

关于Python:查找列表对的一个成员中的连续变化,报告其他成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3601934/

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