【问题标题】:python - how to use the join method and sort methodpython - 如何使用join方法和sort方法
【发布时间】:2021-10-26 01:37:53
【问题描述】:

我的目的是将输入作为字符串并返回该字符串的小写字母列表,不重复,不使用标点符号,按字母顺序排列。例如,输入“快乐!”会得到 ['a','h','p','y']。我尝试使用 join 函数来摆脱我的标点符号,但不知何故它不起作用。有人知道为什么吗?另外, sort.() 可以对字母进行排序吗?我是否以正确的方式使用它?谢谢!

def split(a):
    a.lower()
    return [char for char in a]

def f(a):
    i=split(a)
    s=set(i)
    l=list(s)
    v=l.join(u for u in l if u not in ("?", ".", ";", ":", "!"))
    v.sort()
    return v

【问题讨论】:

  • 那是您的实际代码吗?因为l.join这行有错误,因为l是列表类型。
  • 欢迎来到 SO。请澄清您所说的“它不起作用”是什么意思。一方面,a.lower() 不会修改字符串a。您需要将 a.lower() 设置为其他变量,并在下一行的列表理解中使用它。

标签: python function sorting join


【解决方案1】:

.join() 是一个字符串方法,但用于列表,因此代码会引发异常,但 join 并不真正需要。

set() 让您走在正确的轨道上。它只存储唯一的项目,因此创建一组输入并用小写字母计算交集(&)。排序结果:

>>> import string
>>> s = 'Happy!'
>>> sorted(set(s.lower()) & set(string.ascii_lowercase))
['a', 'h', 'p', 'y']

【讨论】:

    【解决方案2】:

    你可以使用:

    def f(a):
        return sorted(set(a.lower().strip('?.;:!')))
    

    >>> f('Happy!')
    ['a', 'h', 'p', 'y']
    

    【讨论】:

      【解决方案3】:

      您也可以为此使用正则表达式:

      pattern = re.compile(r'[^a-z]')
      
      string = 'Hello@ W0rld!!#@'
      
      print(sorted(set(pattern.sub('', string))))
      

      输出:

      ['d', 'e', 'l', 'o', 'r']
      

      【讨论】:

      • @MarkTolonen 啊,我的错。刚刚再次阅读了这个问题,一定错过了。
      • @xinhwa 我的荣幸!
      猜你喜欢
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 2015-10-27
      相关资源
      最近更新 更多