将一个列表中的元组附加到另一个列表并打印它的问题

桑托斯·马科斯

我试图通过将元组第一项与指定的 int() 进行比较来打印元组列表,但由于某种神秘原因,第二项中为 0 的元组消失了

编码:

n_vertical = 3
n_horizontal = 3
for x in range(0,n_vertical):
    for y in range(0,n_horizontal):
        area.append((x,y,0))

print(area)
print('''
''')
def representacao_do_mapa(modo):
    if modo == 1:
        n=0
        l_c = []
        for x in area:
            if x[0] == n:
                l_c.append(x)
            else:
                print(l_c)
                l_c = []
                n+=1
representacao_do_mapa(1)

输出截图

文本输出:

[(0, 0, 0), (0, 1, 0), (0, 2, 0)]
[(1, 1, 0), (1, 2, 0)]
帕特里克·阿特纳

问题

x创建新列表时,您正在丢弃元组

        if x[0] == n:
            l_c.append(x)       # here you append x
        else:
            print(l_c)          # here you print but do nothing with x
            l_c = []            # list empty, x is missing
            n+=1

解决方案

def representacao_do_mapa(modo):
    if modo == 1:
        n=0
        l_c = []
        for x in area:
            if x[0] == n:
                l_c.append(x)
            else:
                print(l_c)
                l_c = [x]       # fix here
                n+=1
        print(l_c)              # fix here 

representacao_do_mapa(1)

除此之外 - 你的最后一个列表不会被打印,因为最后一个列表l_c永远不会进入你的代码的打印部分 - 你必须在区域的 for 循环之外添加它。

输出(对于n_vertical = 3n_horizontal = 3

[(0, 0, 0), (0, 1, 0), (0, 2, 0)]
[(1, 0, 0), (1, 1, 0), (1, 2, 0)]
[(2, 0, 0), (2, 1, 0), (2, 2, 0)]

优化:

您可以使用列表推导式和列表分解来缩短代码:

n_vertical = 3
n_horizontal = 3
area = [ (x,y,0) for x in range(n_horizontal) for y in range(n_vertical )]
# create with inner lists
area2 = [ [(x,y,0) for x in range(n_horizontal)] for y in range(n_vertical)]

print(area)

# print each inner list on new line
print(*area2, sep="\n")

或者您可以直接从area以下位置打印

print(* (area[i*n_horizontal:i*n_horizontal+n_horizontal] 
         for i in range(n_vertical)) , sep="\n")

使用发电机表达切片arean_horizontal片。


有关生成器/列表表达式的更多信息:生成器表达式与列表理解

有关分块列表的更多信息:如何将列表拆分为大小均匀的块?

有关列表切片的更多信息:了解切片符号

更多关于打印:https : //docs.python.org/3/library/functions.html#print

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将元组列表从一个附加到另一个

如何有条件地将一个列表中的元组附加到另一个元组列表中?

将一个元组附加到另一个元组 python 中

如何将2d列表中的值附加到另一个列表并打印

当一个单词附加到另一个单词时,如何从 Python 列表中删除它?

如何将列表中的匹配元素附加到另一个列表?

来自另一个类的属性没有附加到列表中并打印

将列表(元素)附加到另一个列表中,按字母给出一个元素

从另一个列表附加到列表

将列表的副本附加到另一个列表中时,在更改原始列表后,它也会在另一个列表中更改

如何将2个简短列表中的元素追加到另一个大元组列表中?

如何根据另一个嵌套列表将缺失值附加到嵌套中?

将一个列表添加到Java中的另一个列表?

如果子列表中存在术语,如何仅将子列表附加到另一个列表?

将列表追加到另一个列表

在 Ansible 中将一个列表附加到另一个列表(oneliner)

如何使用for循环将列表附加到另一个列表

将列表的元素附加到迭代器的左侧或右侧到另一个列表

将一个列表附加到另一个列表以合并数据源

将一个列表的每个命名元素附加到另一个列表的相同命名元素

如何将一个列表的所有元素附加到另一个列表?

将一个列表索引附加到另一个列表不同长度的索引

在嵌套列表中测试是否相等,然后将结果附加到另一个列表中?

如何仅在另一个 python 列表中的某个值之后附加到列表?

如何将列表(从for循环中出来)附加到scala中的另一个现有列表

将列表的所有元素分别附加到python中另一个列表的所有元素

将元素保留在另一个列表中包含的元组列表中

在Python中汇总列表-在一个元组和另一个列表中

如何将列表中的列表添加到另一个列表