gpt4 book ai didi

python - 我无法弄清楚这个压缩代码

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

def duplicate_count(s):
return len([c for c in set(s.lower()) if s.lower().count(c)>1])

我很难理解这段代码的工作原理。我正在做一个代码战挑战,以返回字符串中重复元素的数量。

例如。阿萨德 --> 2

我想出了自己的实现,但我无法真正理解这段代码的作用。如果有人能指出我的方向,我将不胜感激:)

最佳答案

首先,这是一个非常低效的问题解决方案。但让我们分解一下:

  • s.lower()会将字符串中的所有字符转换为小写:

    In [1]: s = "Hello, WORLD"

    In [2]: s.lower()
    Out[2]: 'hello, world'
  • set(s.lower()) 会创建一个 set (确保阅读什么是字符串中的字符集)——消除所有重复项:

    In [3]: set(s.lower())
    Out[3]: {' ', ',', 'd', 'e', 'h', 'l', 'o', 'r', 'w'}
  • for c in set(s.lower()) 遍历我们上面创建的集合中的每个字符
  • 对于这个集合中的每个字符,我们应用这个 if 条件:if s.lower().count(c)>1。这里的 count(c) 会计算 c 在字符串中出现的次数。 >1 帮助我们留下在字符串中出现超过 1 次的字符
  • [c for c in set(s.lower()) if s.lower().count(c)>1] 被称为 list comprehension 。它基本上是创建列表的一种简短方法。在这里,我们正在创建一个字符串中多次出现的字符列表。查看 this topic about how to verbalize and read the list comprehensions
  • len() 然后让我们得到列表的长度

总而言之,您遍历给定字符串中的唯一字符,并计算其中哪些字符在字符串中出现超过一次。

关于python - 我无法弄清楚这个压缩代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47861656/

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