Python函数不断返回空列表[[],[],[]]

ddarikpa  于 5个月前  发布在  Python
关注(0)|答案(2)|浏览(52)

这可能有点明显,但我对python相对较新。
所以我尝试了一小段代码来打印一个列表,其中包含来自以下数据的每个子列表的最小字符串。

my_movies = [['How I Met Your Mother', 'Friends', 'Silicon Valley'],['Family Guy', 'South Park', 'Rick and Morty'],['Breaking Bad', 'GOT', 'The Wire', 'The Last of Us']]

字符串
令人惊讶的是,我得到了空列表作为输出。有人可以帮助我吗?

def min_length(my_movies):
    all_small_movies=[]
    minlen=2
    for movies in my_movies:
        if len(movies)<minlen:
            minlen=len(movies)
            all_small_movies=[movies]
    return all_small_movies
small_new_list=list(map(min_length,my_movies))

dsekswqp

dsekswqp1#

就像我提到的,这是minlen的初始化值的问题
这里是更新的代码

import sys

my_movies = [['How I Met Your Mother', 'Friends', 'Silicon Valley'],['Family Guy', 'South Park', 'Rick and Morty'],['Breaking Bad', 'GOT', 'The Wire', 'The Last of Us']]

def min_length(my_movies):
    all_small_movies=[]
    minlen=minlen=sys.maxsize
    for movies in my_movies:
        if len(movies)<minlen:
            minlen=len(movies)
            all_small_movies=[movies]
    return all_small_movies
small_new_list=list(map(min_length,my_movies))

print(small_new_list)

字符串
这里是输出

[['Friends'], ['Family Guy'], ['GOT']]


你可以明显地看到你在列表中添加了一个列表。你可以根据你的需要修改它的行为。
它也接受第一个最小的字符串,如果有多个相同大小的最小字符串,它将忽略其他。您可以决定您想要做什么并相应地更新此。
在发布问题之前也尝试使用调试器,这对你来说将是很好的学习。

6yjfywim

6yjfywim2#

你有句台词说

if len(movies)<minlen:

字符串
这样就永远不允许代码执行了。

for movies in my_movies:


这一行遍历嵌入列表,所有列表的长度都大于2,这意味着len(movies)永远不会小于minlenall_small_movies保持为空。

相关问题