在现有列表中创建最短和最长单词的新列表 - Python
Create new lists of the shortest and longest words in an existing list - Python
我知道有更好的方法可以做到这一点,但我似乎找不到。正如你在下面看到的,我得到了最长和最短的结果,但这只是因为我知道最长和最短的单词是什么,然后我输入了一个条件……但是如果我不知道最长和最短的单词怎么办…… . 希望我说清楚了。刚开始编程所以没有经验。非常感谢您的帮助!
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
你可以找到最短和最长名字的len
len_short = min([len(x) for x in names])
len_long = max([len(x) for x in names])
这些变量可以替换代码中的 4
和 6
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
您可以使用 max and min 内置函数,将 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
另一种方法是根据名字的长度对列表进行排序,然后过滤掉那些符合最长和最短单词长度的名字:
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])]
我知道有更好的方法可以做到这一点,但我似乎找不到。正如你在下面看到的,我得到了最长和最短的结果,但这只是因为我知道最长和最短的单词是什么,然后我输入了一个条件……但是如果我不知道最长和最短的单词怎么办…… . 希望我说清楚了。刚开始编程所以没有经验。非常感谢您的帮助!
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
你可以找到最短和最长名字的len
len_short = min([len(x) for x in names])
len_long = max([len(x) for x in names])
这些变量可以替换代码中的 4
和 6
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
您可以使用 max and min 内置函数,将 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
另一种方法是根据名字的长度对列表进行排序,然后过滤掉那些符合最长和最短单词长度的名字:
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])]