首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何递减列表中两侧的元素

如何递减列表中两侧的元素
EN

Stack Overflow用户
提问于 2019-10-20 19:23:40
回答 2查看 59关注 0票数 0

我想要得到这个:

代码语言:javascript
复制
[['A', 'A', 'A'], ['', 'A', '']]

我有一些代码,但结果是:

代码语言:javascript
复制
[['A', 'A', 'A'], ['A', 'A', 'A']]

我知道我只是插入了这个字符,但是如何从两边移除元素呢?

底座-金字塔的底座

字符-应填充金字塔的字母

代码语言:javascript
复制
def matrix(base: int, char: str) -> list:
    new_list = []
    n = 0
    for i in range(base // 2 + 1):
        row = []
        for m in range(base):
            row.insert(n, char)
            n += 1
        new_list.append(row)
    return new_list

matrix(3, "A")
EN

回答 2

Stack Overflow用户

发布于 2019-10-20 19:35:23

您可以使用类似以下内容:

代码语言:javascript
复制
def matrix(base: int, char: str) -> list:
    new_list = []
    step = 0
    while step < base / 2:
        row = ['']*step + [char]*(base-2*step) + ['']*step
        new_list.append(row)
        step += 1
    return new_list

matrix(3,"A")
票数 1
EN

Stack Overflow用户

发布于 2019-10-20 20:03:05

将以下几行添加到现有代码中的外部for循环中应该会得到所需的结果:

代码语言:javascript
复制
for j in range(0,i):
        new_list[i][j] = ''
        new_list[i][-1-j] = ''

说明:在每一次迭代中,我们基本上在列表的开头和结尾比以前多做了一个元素作为''

因此,结果代码将是:

代码语言:javascript
复制
def matrix(base: int, char: str) -> list:
    new_list = []
    n = 0
    for i in range(base // 2 + 1):
        row = []
        for m in range(base):
            row.insert(n, char)
            n += 1
        new_list.append(row)

        for j in range(0,i):
            new_list[i][j] = ''
            new_list[i][-1-j] = ''

    return new_list

print(matrix(3,"A"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58472491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档