在一个“参差不齐”的列表中循环

2024-06-06 14:10:38 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有这个清单:

list = ["NYC Football", ["NY Giants","NY Jets"], "NYC Hockey", ["NY Rangers", "NY Islanders", "NJ Devils"]]

如何循环查看此列表并仅打印出:

^{pr2}$

Tags: 列表listnycnyfootballpr2njgiants
3条回答

首先,请不要用名单的名单。您将隐藏内置列表,这将给您一个很难检测到的错误迟早。在

正如切普纳在评论中已经提到的,我强烈建议把你的列表转换成一本字典,这样你就可以清理了运动:团队地图。在

>>> lst = ["NYC Football", ["NY Giants","NY Jets"], "NYC Hockey", ["NY Rangers", "NY Islanders", "NJ Devils"]]
>>> teams = dict(zip(*[iter(lst)]*2))
>>> teams
{'NYC Football': ['NY Giants', 'NY Jets'], 'NYC Hockey': ['NY Rangers', 'NY Islanders', 'NJ Devils']}

为了得到运动,问题

^{pr2}$

为了得到团队,发布

>>> teams.values()
[['NY Giants', 'NY Jets'], ['NY Rangers', 'NY Islanders', 'NJ Devils']]

您还可以使用itertools.chain取消此列表的嵌套:

>>> list(chain.from_iterable(teams.values()))
['NY Giants', 'NY Jets', 'NY Rangers', 'NY Islanders', 'NJ Devils']

我以为字典的顺序并不重要。如果是,您可以使用collections模块中的OrderedDict。在

>>> from collections import OrderedDict
>>> teams = OrderedDict(zip(*[iter(lst)]*2))
>>> for team in chain.from_iterable(teams.values()):
...     print(team)
... 
NY Giants
NY Jets
NY Rangers
NY Islanders
NJ Devils

在外部列表上循环,并且只有当项是列表时,才对其进行迭代并打印其项:

for thing in my_list: #don't call it "list"
    if isinstance(thing, list):
        for other in thing:
            print(other)

另一种方式:

^{pr2}$

您可以使用以下方法:

my_list = ["NYC Football", ["NY Giants","NY Jets"], "NYC Hockey", ["NY Rangers", "NY Islanders", "NJ Devils"]]

for item in my_list:
    if type(item) == list:
        for i in item:
            print(i)

输出

^{pr2}$

旁白:您不应该使用关键字list作为变量名。在我的示例中,我将其改为my_list。在

相关问题 更多 >