gpt4 book ai didi

python - 如何在列表理解中增加变量

转载 作者:行者123 更新时间:2023-12-05 08:51:30 25 4
gpt4 key购买 nike

我有一个 python 函数,如果索引为奇数,则字符增加 1 个 ascii 值,如果索引为偶数,则将 ascii 值减少 1。我想将它转换为一个函数,该函数执行相同的递增和递减,但在下一组我想递增 2,然后递减 -2,然后递减 3 和 -3,依此类推。

我想做的是在执行 ascii 递减后,每次出现偶数索引时,将计数器变量递增 1。

我也不想用 for 循环来做,有什么办法可以在列表理解本身中做吗?

在我的函数中,如果输入是

input :'abcd' output: is 'badc' what i want is 'baeb'

input :'cgpf' output: is 'dfqe' what i want is 'dfrd'

def changer(s):
b=list(s)
count=1
d=[chr(ord(b[i])+count) if i%2==0 else chr(ord(b[i])-count) for i in range(0,len(b))]
return ''.join(d)

我需要像 count++ 这样的东西,但遗憾的是 python 不支持它。

def changer(s):
b=list(s)
count=1
d=[chr(ord(b[i])+count) if i%2==0 else chr(ord(b[i])-count++) for i in range(0,len(b))]
return ''.join(d)

Here is the runnable code

最佳答案

如果我正确地理解了您的需求,那么像这样(紧凑形式)应该做的事情:

def changer(s):
return "".join(chr(ord(c) + ((i // 2) + 1) * (-1 if i % 2 else 1))
for i, c in enumerate(s))

我们通过 enumerate() 从字符串中获取索引和字符,并使用它来提供远离索引 (i) 的生成器理解(根据要求)和来自字符串的字符 (c)。

对于 c 的每个 ASCII 值,我们将 i 的整数除法结果相加(当索引基于 0 时增加 1) 2 并乘以 (-1 if i % 2 else 1) 根据偶数/奇数翻转 +/-:乘以-1i 除以 2 的模为非零时(并且 bool() 计算为 True) ,否则使用 1

不用说:这样的理解不一定容易阅读,所以如果您在脚本中使用它,它值得一个很好的评论以供将来引用。 ;)

关于python - 如何在列表理解中增加变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59802469/

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