Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中向左或向右移动对象?_Python_Loops - Fatal编程技术网

如何在python中向左或向右移动对象?

如何在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

遇到问题,假设我有以下代码(最简单):

如果我想把它像协议一样打印出来,也就是说,我不想让它们在一个接一个地打印出来,我希望我的第二个for循环在第一个for循环的右边,就像这样:

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")