【问题标题】:Create new lists of the shortest and longest words in an existing list - Python在现有列表中创建最短和最长单词的新列表 - Python
【发布时间】:2015-03-05 11:58:16
【问题描述】:

我知道有更好的方法可以做到这一点,但我似乎找不到。正如您在下面看到的那样,我得到了最长和最短的结果,但这只是因为我知道最长和最短的单词是什么,然后我输入了一个条件......但是如果我不知道最长和最短的单词怎么办...... .希望我说清楚。刚开始编程,没有经验。非常感谢您的帮助!

names = [ "Brian", "jake", "Jason", "Brad", "Tony", "jimmy", "Bobby", "Stevie"] 

long = []
short = []

for name in names:
    if len(name) <= 4:
        short.append(name)
        print "Short names: ", short

for name in names:
    if len(name) >=6:
        long.append(name)
        print "long names: ", long

【问题讨论】:

  • 提示:min(len(s) for s in names)max(len(s) for s in names) 按顺序为您提供最短和最长字符串的长度。

标签: python list loops for-loop


【解决方案1】:

你可以用

找到最短和最长名字的len
len_short = min([len(x) for x in names])
len_long = max([len(x) for x in names])

然后这些变量可以替换您代码中的46


names = [ "Brian", "jake", "Jason", "Brad", "Tony", "jimmy", "Bobby", "Stevie"] 

long = []
short = []
len_short = min([len(x) for x in names])  # this will be 4
len_long = max([len(x) for x in names])  # this will be 6

for name in names:
    if len(name) <= len_short:
        short.append(name)
        print "Short names: ", short

for name in names:
    if len(name) >= len_long:
        long.append(name)
        print "long names: ", long

【讨论】:

  • 干杯蒂姆,我会试一试!
  • 非常感谢蒂姆!我开始尝试使用您的答案来更好地理解,我尝试了这个: for x in names: len_short = min(len(x)) for x in names: len_long= max(len(x)) 并且它没有工作!
  • 为蒂姆的全面回复干杯!现在有了更好的理解!谢谢
【解决方案2】:

您可以将maxmin 内置函数与len 一起用作key 参数。

>>> names = [ "Brian", "jake", "Jason", "Brad", "Tony", "jimmy", "Bobby", "Stevie"]
>>> max(names, key=len)
'Stevie'
>>> min(names, key=len)
'jake'
>>> len(max(names, key=len))
6
>>> len(min(names, key=len))
4

【讨论】:

    【解决方案3】:

    另一种方法是按照名称的长度对列表进行排序,然后过滤掉那些匹配最长和最短单词长度的名称:

    sorted_names = sorted(names, key=len)
    short_names = [i for i in sorted_names if len(i) == len(sorted_names[0])]
    long_names = [i for i in sorted_names if len(i) == len(sorted_names[-1])]
    

    【讨论】:

      猜你喜欢
      • 2013-01-21
      • 2012-04-12
      • 1970-01-01
      • 2013-01-16
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多