我将字符串作为输入。如果@
代表列而#
代表行,我必须转换为2D列表或矩阵。
例如:从1@-2@3#-3@2@4#-7@8@9
到[[1,-2,3],[-3,2,4],[-7,8,9]]
。
这是我的代码。我无法获得确切的结果。
a = input()
b = a.split('#')
c = [list(word) for word in b]
print(c)
但这给了我
[['1', '@', '-', '2', '@', '3'],
['-', '3', '@', '2', '@', '4'],
['-', '7', '@', '8', '@', '9']]
({'-'
属于下一个元素,它不是类似于'-2'
的表达式)
答案 0 :(得分:1)
您快到了。 c = [list(word) for word in b]
将单词中的每个字符转换为单独的元素。为避免这种情况,请先将您喜欢的元素归为一个列表:
c = [word.split('@') for word in b]
如果要使条目为整数,则必须明确地做到这一点:
c = [[int(item) for item in word.split('@')] for word in b]
答案 1 :(得分:0)
这是一种使用split
分别在#
和@
以及map
到int
的单元格上执行按行和按列拆分的方法:
s = "1@-2@3#-3@2@4#-7@8@9"
print([list(map(int, x.split("@"))) for x in s.split("#")])
输出:
[[1, -2, 3], [-3, 2, 4], [-7, 8, 9]]