Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在这种情况下,如何从列表理解转到循环?_Python_List_List Comprehension - Fatal编程技术网

Python 在这种情况下,如何从列表理解转到循环?

Python 在这种情况下,如何从列表理解转到循环?,python,list,list-comprehension,Python,List,List Comprehension,我必须在不使用列表理解的情况下执行以下操作。 我有一个如下所示的列表: ["Mi Fa Sol", 'Mi', "Mi Fa Sol La Si", "Do Si", " Mi Si Fa", "Fa"] ["Mi", "Fa", "Sol", "Mi", "Mi", "Fa"

我必须在不使用列表理解的情况下执行以下操作。 我有一个如下所示的列表:

["Mi Fa Sol", 'Mi', "Mi Fa Sol La Si", "Do Si", " Mi Si Fa", "Fa"]
["Mi", "Fa", "Sol", "Mi", "Mi", "Fa", "Sol", "La", "Si", "Do", "Si", "Mi", "Si", "Fa", "Fa"]
我想得到的是一个如下列表:

["Mi Fa Sol", 'Mi', "Mi Fa Sol La Si", "Do Si", " Mi Si Fa", "Fa"]
["Mi", "Fa", "Sol", "Mi", "Mi", "Fa", "Sol", "La", "Si", "Do", "Si", "Mi", "Si", "Fa", "Fa"]
我认为,我可以通过以下方式做到这一点:

    lst = [elem.strip().split() for elem in lst]
    lst = [elem for sub_lst in lst for elem in sub_lst]

但是我不知道如何在没有列表理解的情况下实现相同的结果。

您当前使用两个单独列表理解的版本可以简化为使用单个列表理解:

lst = [e for elem in lst for e in elem.split()]
但是,如果要使用传统的
for
循环,则可以像当前一样循环
lst
的每个
elem
,并使用将拆分的元素添加到结果列表
res

lst = ["Mi Fa Sol", 'Mi', "Mi Fa Sol La Si", "Do Si", " Mi Si Fa", "Fa"]
res = []
for elem in lst:
    res.extend(elem.split())
print(res)
输出:

['Mi', 'Fa', 'Sol', 'Mi', 'Mi', 'Fa', 'Sol', 'La', 'Si', 'Do', 'Si', 'Mi', 'Si', 'Fa', 'Fa']
如果以后需要,您可以将
res
分配回
lst


旁注:由于您使用了
split()
的默认分隔符,因此在这种情况下,您还可以省略冗余的
strip()

以下是一种功能方法:

>>音乐=[“我的歌”、“我的歌”、“我的歌”、“我的歌”、“我的歌”、“我的歌”、“我的歌”]
>>>减少(λx,y:x+y,映射(str.split,music))
['Mi','Fa','Sol','Mi','Mi','Fa','Sol','La','Si','Do','Si','Mi','Si','Fa','Fa']
lambda表达式可以替换为
运算符。添加

导入运算符 >>>reduce(operator.add、map(str.split、music)) ['Mi','Fa','Sol','Mi','Mi','Fa','Sol','La','Si','Do','Si','Mi','Si','Fa','Fa']
要使上述代码段在Python 3中工作,您必须包括以下句子:

从functools导入reduce