Python:array和print()格式
我试图实现一个函数,将array_1更改为array_2,以便array_2生成与array_1相同的输出。例如:Python:array和print()格式,python,list,format,Python,List,Format,我试图实现一个函数,将array_1更改为array_2,以便array_2生成与array_1相同的输出。例如: for item in array_1: print(item, end ='') 我希望下面的代码产生与上面代码相同的输出: for item in array_2: print(item) array_1=[“你好”、“世界”、“世界”、“世界”、“这个”、“是”、“是”、“a”、“textarray”] 在第一段代码中运行此命令,我会: HelloWo
for item in array_1:
print(item, end ='')
我希望下面的代码产生与上面代码相同的输出:
for item in array_2:
print(item)
array_1=[“你好”、“世界”、“世界”、“世界”、“这个”、“是”、“是”、“a”、“textarray”]
在第一段代码中运行此命令,我会:
HelloWorld
Thisis
atextarray
我应该如何实现将array_1更改为array_2的函数,以便生成与上面相同的输出 你想要的是不可能的
首先,请注意,反转方向很容易。不同之处在于,
array2
中的项目在每个项目后面都有一个换行符,而array1
中的项目在每个项目后面都没有任何内容,因此您只需在array1
中的每个项目末尾添加一个\n
array_2 = [item+'\n' for item in array_1]
from functools import partial
print = partial(print, end='')
array_1 = ["Hello", "World", '\n', '\n', "This", "is", '\n', "a", "textarray"]
for item in array_1:
print(item)
你不能只是扭转这种局面。显然没有什么比
项-'\n'
更好的了。如果每个项目都以\n
结尾,您可以执行项目[:-1]
,但大多数项目没有,并且您无法删除不存在的换行符
而且没有办法取消print
将要添加在带有反换行符的字符串后面的换行符。我的意思是,您可以包含一个终端控制序列,将光标向上移动一行,这样看起来它做了相同的事情,但实际上它没有做相同的事情,这很容易被破坏(在Windows上运行代码,将输出重定向到文件,…)
你可以靠得很近。你从来没有说过你需要元素一对一的对应关系,所以你可以这样做:
array_2 = [''.join(array_1)]
现在您在数组_2
中只有一个项目,因此它在项目之间打印换行并不重要
但最后还是有一个新行,毕竟是一个项目。但仍然无法摆脱它(因为最后一项不是以可以删除的\n
结尾)
所以,这个问题是不可能的。(缺少一些技巧性的问题答案,比如重新定义打印
,以特殊情况显示您的输出或其他内容。)在程序开始时,在分配数组_1值后,您只需编写数组_2=数组_1
array_2 = [item+'\n' for item in array_1]
from functools import partial
print = partial(print, end='')
array_1 = ["Hello", "World", '\n', '\n', "This", "is", '\n', "a", "textarray"]
for item in array_1:
print(item)
还可以将第一位代码设置为带有参数x的函数,这样就可以将数组_1和数组_2放在一起。您的最终代码应该是这样的:
array_1 = ["Hello", "World", '\n', '\n', "This", "is", '\n', "a", "textarray"]
array_2 = array_1
def arr(x):
for item in x:
print(item, end ='')
然后,您可以在发送此函数时改变数组_1或数组_2的放置方式
arr(array_1)
arr(array_2)
这些应该给您相同的值。因为您真正想要的是更改print
的默认行为,以便默认情况下它不会输出尾随的换行符,所以您可以使用functools.partial
将end='
作为默认参数。这样,您就不必担心从array\u 1
创建新列表
array_2 = [item+'\n' for item in array_1]
from functools import partial
print = partial(print, end='')
array_1 = ["Hello", "World", '\n', '\n', "This", "is", '\n', "a", "textarray"]
for item in array_1:
print(item)
这将产生:
HelloWorld
Thisis
atextarray
array_2=array_1
maybe?array_2未定义。我想从数组_1构建数组_2,这样它就否定了print(item,end='')正在做的事情,并使用print(item)。由于没有其他参数的print
将在打印结束时强制换行,因此需要将array_1
的元素正确地连接到一个字符串中。有关基本字符串操作的信息,请访问您喜爱的教程。@Prune这仍然不能解决问题,因为在循环的末尾仍然会有一个额外的换行符。真的没有办法,我不一定要删除换行符。我正在尝试格式化数组_1,这样我们就可以创建新行。@Corp.andLtd。我明白了,这就是问题所在:没有办法做到这一点。换行符是通过print
添加的,它不是字符串的一部分。因此,对字符串所做的任何操作都不会阻止打印换行符。