跳过嵌套的 for 循环迭代 - Python
Skipping a nested for loop iteration - Python
首先,让我解释一下我正在尝试做什么。
我想使用列表中的字符串打印四边形(正方形)。像这样:
John
o h
h o
nhoJ
我得到了我想要的打印结果,除了我的 for 循环打印的比需要的多。我只需要根据实际字符串的长度跳过几个循环迭代。
这是我需要帮助的地方,在“quad_text”函数中:
for i in norm_list[1:-1]:
for j in reve_list[1:-1]:
print(f"{i}{spaces}{j}")
我现在的输出结果:
---
John
o h
o o
h h
h o
nhoJ
---
Joe
o o
eoJ
---
David
a i
a v
a a
v i
v v
v a
i i
i v
i a
divaD
完整代码
#Global Variables"
normal_list = ["John", "Joe", "David"]
#normal_list = ["Hey there buddy!"]
def initialization():
rev_list = string_reverser()
combined_lists = zip(normal_list, rev_list)
quad_text(list(combined_lists))
def string_reverser():
reversed_list = []
for i in normal_list:
reversed_list.append(i[::-1])
return(reversed_list)
def quad_text(combined_lists):
for (norm_list, reve_list) in combined_lists:
print("---")
print(norm_list)
text_len = len(norm_list)
spaces = (text_len - 2) *(" ")
for i in norm_list[1:-1]:
for j in reve_list[1:-1]: # <--- Problem Area
print(f"{i}{spaces}{j}")
print(reve_list)
initialization()
不要使用嵌套循环,这会在正向和反向列表之间创建叉积。使用 zip()
将它们一起循环。
for i, j in zip(norm_list[1:-1], reve_list[1:-1]):
print(f"{i}{spaces}{j}")
首先,让我解释一下我正在尝试做什么。
我想使用列表中的字符串打印四边形(正方形)。像这样:
John
o h
h o
nhoJ
我得到了我想要的打印结果,除了我的 for 循环打印的比需要的多。我只需要根据实际字符串的长度跳过几个循环迭代。
这是我需要帮助的地方,在“quad_text”函数中:
for i in norm_list[1:-1]:
for j in reve_list[1:-1]:
print(f"{i}{spaces}{j}")
我现在的输出结果:
---
John
o h
o o
h h
h o
nhoJ
---
Joe
o o
eoJ
---
David
a i
a v
a a
v i
v v
v a
i i
i v
i a
divaD
完整代码
#Global Variables"
normal_list = ["John", "Joe", "David"]
#normal_list = ["Hey there buddy!"]
def initialization():
rev_list = string_reverser()
combined_lists = zip(normal_list, rev_list)
quad_text(list(combined_lists))
def string_reverser():
reversed_list = []
for i in normal_list:
reversed_list.append(i[::-1])
return(reversed_list)
def quad_text(combined_lists):
for (norm_list, reve_list) in combined_lists:
print("---")
print(norm_list)
text_len = len(norm_list)
spaces = (text_len - 2) *(" ")
for i in norm_list[1:-1]:
for j in reve_list[1:-1]: # <--- Problem Area
print(f"{i}{spaces}{j}")
print(reve_list)
initialization()
不要使用嵌套循环,这会在正向和反向列表之间创建叉积。使用 zip()
将它们一起循环。
for i, j in zip(norm_list[1:-1], reve_list[1:-1]):
print(f"{i}{spaces}{j}")