python - 如何解压列表列表?

标签 python list argument-unpacking

这可能是一个重复的问题,但我想知道是否有一种方法可以解压列表列表并从解压结果中创建变量?我的文件中有一个数据,例如:

'[416213688, 422393399, 190690902, 81688],| [94925847, 61605626, 346027022],| [1035022, 1036527, 1038016]'

所以我打开一个文件并将其设为列表

with open ('data.txt', "r") as f:
   a = f.read()
a = a.split("|")
print(*a)

输出:

[416213688、422393399、190690902、81688]、[94925847、61605626、346027022]、[1035022、1036527、1038016]

这是我的程序下一步所需的输出。 但我无法将此结果作为变量来进一步使用它。如果我尝试,它会给我一个SyntaxError: can't use starred expression here:

a = (*a) 

我尝试使用zip来制作它,但它给了我不正确的输出,类似于问题zip function giving incorrect output中描述的内容.

<zip object at 0x0000000001C86108>

那么有什么方法可以解压列表列表并获得如下输出:

[1st list of variables], [2nd  list of variables], [etc...]

如果我使用itertools我得到:

   l = list(chain(*a))
   Out: ['[', '4', '1', '6', '2', '1', '3', '6'...

这不是必需的

所以工作选项是 https://stackoverflow.com/a/46146432/8589220 :

 row_strings = a.split(",| ")
 grid = [[int(s) for s in row[1:-1].split(", ")] for row in row_strings]
 print(",".join(map(str, grid)))

最佳答案

这是一种将字符串解析为二维网格(即:列表,其本身包含整数列表)的快速而肮脏的方法:

row_strings = a.split(",| ")
grid = [[int(s) for s in row[1:-1].split(", ")] for row in row_strings]
print("\n".join(map(str, grid)))
# Out:
# [416213688, 422393399, 190690902, 81688]
# [94925847, 61605626, 346027022]
# [1035022, 1036527, 1038016]

关于python - 如何解压列表列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46146361/

相关文章:

python - 如何在 python 中正确处理列表列表?具体来说有一个函数列表

python - 如何访问列表中的最后一项?(python)

python - 将列表合并到字典列表中

Python:python 中的 Splat/unpack 运算符 * 不能在表达式中使用?

python - 如何将json作为json而不是PUT方法推送到 Elasticsearch

python - tf.train.MonitoredTrainingSession 参数

python - OAuth2Decorator 是否存储用户凭证并更新 token ?

c# - 模型列表<T> 和 ViewModel ObservableCollection<T> 重复数据?

elixir - 在 Elixir 中使用元组作为函数的参数