将嵌套循环转换为列表理解
converting nested loop to list comprehension
我正在编写一个程序,它定义了两个名为 Funct()
和 Funct1()
的函数。两者都收到以下给定列表:
Name = [‘Sai’, ‘Rusheel’,’Vinay’]
Enroll_no. = [80,90,85]
Subject = [‘Maths’, ‘Computer’, ‘Science’]
这两个函数都应该通过从这些列表中挑选元素和 return 它们来组成一个句子。我在 dosp_1()
中使用 for 循环,在 disp_2()
中使用列表理解。
输出示例:
Sai has enrolment No. 80 and he studies Maths.
我正在使用下面的常规代码和 for 循环:
def Funct(Name,Enroll_No,Subject):
for i in Name:
for j in Enroll_No:
for k in Subject:
print("{} has enrolment No. {} and he studied {}".format(i,j,k))
Funct(Name,Enroll_No,Subject)
现在,我如何使用列表推导来获取它?
按照您当前的操作方式,您将打印姓名、注册和主题的每个可能组合。您可能只想打印 corresponding 组合。内置的 zip()
函数将为您执行此操作:
# as a for loop
for i, j, k in zip(Name, Enroll_No, Subject):
print("{} has enrolment No. {} and he studied {}".format(i, j, k))
# using a comprehension
print("\n".join([
"{} has enrolment No. {} and he studied {}".format(i, j, k)
for (i, j, k) in zip(Name, Enroll_No, Subject)
]))
# as a for loop without using zip(), for illustration
for n in range(len(Name)):
print(
"{} has enrolment No. {} and he studied {}"
.format(Name[n], Enroll_No[n], Subject[n])
)
(为便于阅读而添加了额外的换行符)
如果出于某种原因,你想实际打印每个可能的组合,你可以在理解中放置多个 for
子句。这应该会产生与您当前代码相同的输出,但可能不是您想要的:
print("\n".join([
"{} has enrolment No. {} and he studied {}".format(i, j, k)
for i in Name
for j in Enroll_No
for k in Subject
]))
*从技术上讲,在这种情况下可以删除 []
- 不带括号的理解生成 生成器 ,而带括号的理解生成 列表。对于 str.join()
,两者将被同等对待。
我正在编写一个程序,它定义了两个名为 Funct()
和 Funct1()
的函数。两者都收到以下给定列表:
Name = [‘Sai’, ‘Rusheel’,’Vinay’]
Enroll_no. = [80,90,85]
Subject = [‘Maths’, ‘Computer’, ‘Science’]
这两个函数都应该通过从这些列表中挑选元素和 return 它们来组成一个句子。我在 dosp_1()
中使用 for 循环,在 disp_2()
中使用列表理解。
输出示例:
Sai has enrolment No. 80 and he studies Maths.
我正在使用下面的常规代码和 for 循环:
def Funct(Name,Enroll_No,Subject):
for i in Name:
for j in Enroll_No:
for k in Subject:
print("{} has enrolment No. {} and he studied {}".format(i,j,k))
Funct(Name,Enroll_No,Subject)
现在,我如何使用列表推导来获取它?
按照您当前的操作方式,您将打印姓名、注册和主题的每个可能组合。您可能只想打印 corresponding 组合。内置的 zip()
函数将为您执行此操作:
# as a for loop
for i, j, k in zip(Name, Enroll_No, Subject):
print("{} has enrolment No. {} and he studied {}".format(i, j, k))
# using a comprehension
print("\n".join([
"{} has enrolment No. {} and he studied {}".format(i, j, k)
for (i, j, k) in zip(Name, Enroll_No, Subject)
]))
# as a for loop without using zip(), for illustration
for n in range(len(Name)):
print(
"{} has enrolment No. {} and he studied {}"
.format(Name[n], Enroll_No[n], Subject[n])
)
(为便于阅读而添加了额外的换行符)
如果出于某种原因,你想实际打印每个可能的组合,你可以在理解中放置多个 for
子句。这应该会产生与您当前代码相同的输出,但可能不是您想要的:
print("\n".join([
"{} has enrolment No. {} and he studied {}".format(i, j, k)
for i in Name
for j in Enroll_No
for k in Subject
]))
*从技术上讲,在这种情况下可以删除 []
- 不带括号的理解生成 生成器 ,而带括号的理解生成 列表。对于 str.join()
,两者将被同等对待。