如何使用列表解决此任务?

时间:2019-10-18 18:10:28

标签: python

从主列表和子列表中创建列表

2 个答案:

答案 0 :(得分:0)

我建议将问题分为两个步骤:

  1. 生成金字塔砖的列表(无空白)
  2. 根据需要在空白处添加该列表的每个元素

对于第1步,您可以使用此功能轻松完成此操作:

def pyramid(base, char):
    result = [[char] * i for i in range(1, base+1, 2)]
    return result

您看到它在做什么吗?它循环遍历一系列奇数,并且对于每个数字,它正在构造一个字符列表。每个构造的列表都是返回结果列表的元素。

因此,如果您致电pyramid(5, 'A'),则会得到:

[['A'], ['A', 'A', 'A'], ['A', 'A', 'A', 'A', 'A']]

但是,此解决方案不解决空白问题。要处理这些空白,您可以:

  1. 通过第二个列表理解来运行result,或者:
  2. 编辑第一个(也是唯一一个)列表理解,以在每个子列表的开头和结尾处包含适当数量的空格。

我会让您决定如何自行实现。我希望这会有所帮助!

答案 1 :(得分:0)

如chepner所说,请尝试在没有列表理解的情况下编写自己的代码,然后修改自己的代码。

def pyramid(base, char):
  return [ ['']*num_empty + [char]*num_char + ['']*num_empty for num_empty, num_char in enumerate(list(range(base, 0, -2)))][::-1]