如何解压缩列表?

时间:2016-05-21 07:08:53

标签: python python-3.x join tuples

在Python 3中,我尝试解压缩列表列表:

members = [['3', '5', '5', '20', 'D'], ['2', '2', '2', '30', 'C']]

我希望它以

的格式打印
3 5 5 20 D
2 2 2 30 C

我已尝试使用print (' '.join(members)),,但我一直收到错误:

TypeError: sequence item 0: expected str instance, list found

6 个答案:

答案 0 :(得分:4)

members = [['3', '5', '5', '20', 'D'], ['2', '2', '2', '30', 'C']]
for item in members:
    print ' '.join(item)

答案 1 :(得分:3)

这是一个嵌套列表,当你这样做时:

    long ts = System.currentTimeMillis();
    Date localTime = new Date(ts);
    String format = "yyyy/MM/dd HH:mm:ss";
    SimpleDateFormat sdf = new SimpleDateFormat (format);


    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
    Date gmtTime = new Date(sdf.format(localTime));
    System.out.println("Local:" + localTime.toString() + "," + localTime.getTime() + " --> UTC time:" + gmtTime.toString() + "-" + gmtTime.getTime());

您真的想尝试使用空格加入每个“子列表”。您看到的错误是因为Python无法将整个“子列表”转换为字符串。不过,你走的是正确的道路!

您可以使用列表解析来执行此操作:

print (' '.join(members))

或生成器表达式:

print(*[' '.join(m) for m in members], sep="\n")

或循环:

print(*(' '.join(m) for m in members), sep="\n")

或者也是循环:

for member in members:
    print(*member)

for member in members: print(' '.join(member)) 运算符将列表解压缩为逗号分隔的参数(简单来说就是这样)。

答案 2 :(得分:2)

您需要以某种方式对members的每个成员采取行动。这里有几个选项让你开始。

迭代每个成员并将其解压缩:

>>> for m in members: print(*m)
...
3 5 5 20 D
2 2 2 30 C

加入每个成员并解开整个事件:

>>> print(*(' '.join(m) for m in members), sep='\n')
3 5 5 20 D
2 2 2 30 C

答案 3 :(得分:2)

您可以解压缩 list

中的内部print
for member in members:
      print(*member)
# 3 5 5 20 D
# 2 2 2 30 C

答案 4 :(得分:2)

在python中

" ".join(["a", "b", "c"])

产生

"a b c"

如果您希望单个字符串作为数据的结果,您可以做的只是嵌套其中两个表达式:

result = "\n".join(" ".join(L) for L in members)

使用每个列表中的空格"\n"项分隔获得的换行符" "分隔。

如果您只是想打印数据,那么简单的循环更容易阅读:

for L in members:
    print(" ".join(L))

答案 5 :(得分:2)

这有效

for member in members:
    print " ".join(member)