Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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_Python 3.x_String_Design Patterns - Fatal编程技术网

Python 换位行,其中行数和长度取决于列表

Python 换位行,其中行数和长度取决于列表,python,python-3.x,string,design-patterns,Python,Python 3.x,String,Design Patterns,我正在尝试生成两组字符串图像。 第一 第二 请注意,第二个图像与第一个图像相同,只是逆时针旋转 第一幅图像中的行数和每行的长度基于一个列表,该列表可以是任意长度,并且由严格的正数组成。在本例中,我们的列表是: list = [3, 5, 2, 1] 我在获取第二张图像时遇到一些问题。对于第一个图像,我使用了以下功能: for e in list: print(int(e) * '% ' 这似乎有效。我只是不知道如何处理第二张图片。关于生成每一行,我有一些想法,在这里我可以找到列表中最高的

我正在尝试生成两组字符串图像。 第一

第二

请注意,第二个图像与第一个图像相同,只是逆时针旋转

第一幅图像中的行数和每行的长度基于一个列表,该列表可以是任意长度,并且由严格的正数组成。在本例中,我们的列表是:

list = [3, 5, 2, 1]
我在获取第二张图像时遇到一些问题。对于第一个图像,我使用了以下功能:

for e in list:
  print(int(e) * '% '
这似乎有效。我只是不知道如何处理第二张图片。关于生成每一行,我有一些想法,在这里我可以找到列表中最高的元素,在这个示例列表[1]中找到它的索引,然后在任意一侧合并,这取决于它到列表开头和结尾的距离以及从那里开始的距离,但我不确定

如有任何建议,将不胜感激

谢谢

你可以试试这个

生成第一个图像

a=[['%' for i in range(j)] for j in [3,5,2,1]]
for i in a:
    print(*i)
% % %
% % % % %
% %
%
from itertools import zip_longest #use izip_longest for python2
b=list(zip_longest(*a,fillvalue=' '))[::-1]
for i in b:
    print(*i)

  %
  %
% %
% % %
% % % %
您可以从第一个图像生成第二个图像

a=[['%' for i in range(j)] for j in [3,5,2,1]]
for i in a:
    print(*i)
% % %
% % % % %
% %
%
from itertools import zip_longest #use izip_longest for python2
b=list(zip_longest(*a,fillvalue=' '))[::-1]
for i in b:
    print(*i)

  %
  %
% %
% % %
% % % %

在这里找到最大的数字5。第二幅图像中的第一行表示该高度5,第二行表示高度4,依此类推。对于每一列,只显示一个百分比,其中列高度等于或大于当前行的高度。学究:这里没有显示转置。第一个输出中的第二行有五个%s,第二个输出中的第二列只有四个%s。第二个输出中是否应该有第五个与列表中的计数匹配?