如何在python中向左或向右移动对象?
遇到问题,假设我有以下代码(最简单): 如果我想把它像协议一样打印出来,也就是说,我不想让它们在一个接一个地打印出来,我希望我的第二个for循环在第一个for循环的右边,就像这样:如何在python中向左或向右移动对象?,python,loops,Python,Loops,遇到问题,假设我有以下代码(最简单): 如果我想把它像协议一样打印出来,也就是说,我不想让它们在一个接一个地打印出来,我希望我的第二个for循环在第一个for循环的右边,就像这样: kurt karl kurt karl kurt karl kurt kurt 当然,只要把它们放在一张打印的报表中就行了 在这里,我已经告诉它循环最大数量(在本例中为5),然后如果循环已达到最小数量(3),则停止打印第二个 n = 5 j = 3 for i in range (max(n,j)): if
kurt karl
kurt karl
kurt karl
kurt
kurt
当然,只要把它们放在一张打印的报表中就行了 在这里,我已经告诉它循环最大数量(在本例中为
5
),然后如果循环已达到最小数量(3
),则停止打印第二个
n = 5
j = 3
for i in range (max(n,j)):
if i < min(n,j):
print("kurt" + " " + "karl")
else:
print("kurt")
n=5
j=3
对于范围内的i(最大值(n,j)):
如果i
输出:
kurt karl
kurt karl
kurt karl
None karl
None karl
如果你想要空白
from itertools import izip_longest
first = ['kurt']*j
second = ['karl']*n
spaceJ,spaceN = len(first [0]),len(second [0])
for l,r in izip_longest(first ,second ):
print l if l else ' '*spaceJ,
print r if r else ' '*spaceN
输出
kurt karl
kurt karl
kurt karl
karl
karl
假设“kurt”和“karl”的打印只是您试图解决的更复杂问题的一个示例,这类问题的一般策略是使用Python并发运行两个循环,然后将结果合并输出 例如:
from itertools import zip_longest
n = 5
j = 3
def kurt():
for i in range(n):
yield "kurt"
def karl():
for x in range(j):
yield "karl"
for kurt_result, karl_result in zip_longest(kurt(), karl(), fillvalue=""):
print(kurt_result, karl_result)
当函数体包含yield
关键字时,Python将生成一个生成器而不是常规函数。当调用生成器时,它将返回一个迭代器,该迭代器在每次调用yield
时都会生成一个值,然后等待下一个值被读取,然后再继续下一个yield
。一旦生成器函数返回,迭代就结束了
最后一个for循环使用,这是一个实用函数,它接受两个或多个迭代器并生成另一个迭代器,该迭代器一次生成所有给定迭代器的读取组合序列,允许您轻松匹配每个迭代器的相应结果
然后,此代码生成以下输出:
kurt karl
kurt karl
kurt karl
kurt
kurt
(以上假设为Python 3。如果您使用的是Python 2,则命名了
zip_longest
函数,因此您需要调整这两个引用。)据我所知,您希望在前一个循环的右侧打印下一个循环的值,您可以通过编写以下命令来实现:
在Python2.7中
for i, k in zip(range(n), range(j)):
print "kurt",
print "karl"
在Python3.x中
for i, k in zip(range(n), range(j)):
print("kurt", end=" ")
print("karl")
你能展示一个你想要的输出的例子吗?非常感谢所有的帮助,我还有一个问题,是否可以让for循环打印水平而不是垂直?@a.Maine如果你发布一个新的顶级问题,那么回答你的后续问题会更容易,因为这里不可能在评论中发布代码示例。另外,如果回答了你的问题,请考虑接受这个问题的答案之一。而不是5和3,你应该使用n和j。
for i, k in zip(range(n), range(j)):
print "kurt",
print "karl"
for i, k in zip(range(n), range(j)):
print("kurt", end=" ")
print("karl")