如何打印列表而不是列表列表

2024-09-29 17:16:35 发布

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

我在做一个练习,根据他们的科目和人数,把某些课程分为上下两类。我能够得到正确的上下级分类,但我的输出似乎是一个列表列表。下面是预期的输出,只是一个列表。我的代码基于我在模块中学到的方法。你知道吗

预期产量

['PSYCH 412', 'MATH 300', 'MATH 404', 'ENG 201', 'PSYCH 508', 'ENG 220']

有人能帮我弄清楚如何让我的输出成为一个列表而不是一个列表列表吗?非常感谢。你知道吗

classes = ["MATH 150", "PSYCH 111", "PSYCH 313", "PSYCH 412", "MATH 300", "MATH 404", "MATH 206", "ENG 100", "ENG 103", "ENG 201", "PSYCH 508", "ENG 220", "ENG 125", "ENG 124"]
upper = [] #empty list
lower = [] #empty list

for w in classes:
    sub = w.split()
    if "MATH" in sub and int(sub[1]) >= 300:
        upper.append(sub)
    elif "ENG" in sub and int(sub[1]) >= 200:
        upper.append(sub)
    elif "PSYCH" in sub and int(sub[1]) >= 400:
        upper.append(sub)
    else:
        lower.append(sub)

print("Upper Level Courses:", upper)

我的输出

Upper Level Courses: [['PSYCH', '412'], ['MATH', '300'], ['MATH', '404'], ['ENG', '201'], ['PSYCH', '508'], ['ENG', '220']]

Tags: andin列表mathupperlowerenglist
2条回答

您的解决方案很接近,只需将sub附加wupperlower即可:

classes = ["MATH 150", "PSYCH 111", "PSYCH 313", "PSYCH 412", "MATH 300", "MATH 404", "MATH 206", "ENG 100", "ENG 103", "ENG 201", "PSYCH 508", "ENG 220", "ENG 125", "ENG 124"]
upper = [] #empty list
lower = [] #empty list

for w in classes:
    sub = w.split()
    if "MATH" in sub and int(sub[1]) >= 300:
        upper.append(w)
    elif "ENG" in sub and int(sub[1]) >= 200:
        upper.append(w)
    elif "PSYCH" in sub and int(sub[1]) >= 400:
        upper.append(w)
    else:
        lower.append(w)

print("Upper Level Courses:", upper)

印刷品:

Upper Level Courses: ['PSYCH 412', 'MATH 300', 'MATH 404', 'ENG 201', 'PSYCH 508', 'ENG 220']

因为sub对象是列表类型,所以在结果中它是列表。可以将子列表集中为字符串,或者只使用w对象,然后附加到上/下列表。你知道吗

classes = ["MATH 150", "PSYCH 111", "PSYCH 313", "PSYCH 412", "MATH 300", "MATH 404", "MATH 206", "ENG 100", "ENG 103", "ENG 201", "PSYCH 508", "ENG 220", "ENG 125", "ENG 124"]
upper = [] #empty list
lower = [] #empty list

for w in classes:
    sub = w.split()
    if "MATH" in sub and int(sub[1]) >= 300:
        upper.append(" ".join(sub))
    elif "ENG" in sub and int(sub[1]) >= 200:
        upper.append(" ".join(sub))
    elif "PSYCH" in sub and int(sub[1]) >= 400:
        upper.append(" ".join(sub))
    else:
        lower.append(" ".join(sub))

print("Upper Level Courses:", upper)

您还可以使用List Comprehensions重写代码,如下所示:

classes = ["MATH 150", "PSYCH 111", "PSYCH 313", "PSYCH 412", "MATH 300", "MATH 404", "MATH 206", "ENG 100", "ENG 103", "ENG 201", "PSYCH 508", "ENG 220", "ENG 125", "ENG 124"]

upper = [c for c in classes if ("MATH" in c and int(c.split()[1])>=300) or ("ENG" in c and int(c.split()[1])>=200) or ("PSYCH" in c and int(c.split()[1])>=400) ]
lower = [c for c in classes if c not in upper]

希望有帮助。你知道吗

相关问题 更多 >

    热门问题