繁体   English   中英

在不带括号的列表中打印多个列表

[英]Printing multiple lists in a list without brackets

CODE1:有效,输出为123。

grid1=['1','2','3']
test=''.join(grid1)
print(test)

CODE2:我对此进行了修改,但失败了,并抛出以下错误消息。

grid2 = [
['1','2','3'],
['4','5','6']
]

test=''.join(grid2)
print(test)

错误

Traceback (most recent call last):
  File "C:/Users/V/Desktop/0 Python/GridTEST.py", line 10, in <module>
    test=''.join(grid2)
TypeError: sequence item 0: expected str instance, list found

CODE3:我做了一些挖掘,找到了解决以下问题的方法。

for x in grid2:
    print (''.join(map(str, x)))

我的问题是:

  1. 为什么CODE2在添加另一个列表时失败?
  2. 有人可以帮我分解一下CODE3的实际作用吗? (即逐步)

谢谢!

您不能join两个列表作为字符串连接-您只能join字符串。 code3作用是从您迭代的内部列表中提取字符串值。 内部列表包含字符串,外部列表包含列表-这就是为什么您不能join它们作为字符串join原因。

for x in grid2:
    test = ''.join(x)

也会“工作”(除非test会被覆盖第二次迭代。

您需要知道的是separator.join(iterable)要求iterable字符串序列。 然后,它返回一个新字符串,所有字符串都可iterable并带有字符串separator

为什么CODE2在添加另一个列表时失败?

CODE2失败,因为iterator是一个列表序列,而不是字符串序列。

有人可以帮我分解一下CODE3的实际作用吗? (即逐步)

CODE3的显示方式错误。 它应该是:

for x in grid2:
    print (''.join(map(str, x)))

循环遍历grid2的元素。 每个元素都是一个字符串列表,对吗? x是循环变量。 因此,在每次迭代中, x是一个字符串列表。 map(str, x)应用功能str()中的所有元素x ,并返回一个新的列表。 CODE3基本上执行CODE1的工作,只是分别针对每个子列表。

CODE2由于添加了另一个列表而失败,因为当您执行sep.join(my_list)它依赖于list中的每个项目都是str 这就是为什么它说'sequence item 0'指的是list的项目,而不是list本身。 考虑到这一点,您不能join两个列表。

CODE3只是将序列x所有项目转换为字符串,以创建一个由其中的项目组成的字符串list

您也可以这样做,而不是使用CODE3:

[''.join(l) for l in grid2]  # This is called a list comprehension.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM