Python - 转换列表

0 投票
3 回答
813 浏览
提问于 2025-04-17 22:41

命令 cmds.polyInfo (fe=True) 的输出结果是:

[u'FACE     64:     48     49     50     51     52     54     64     74     84     94    104 \n']

我该如何把它转换成这种格式的列表呢?

[48, 49, 50, 51, 52, 54, 64, 74, 84, 94, 104]

我怀疑需要使用 re.findall 这个工具。

如果有人能帮忙,我会非常感激的 :)

3 个回答

0

你只需要稍微分一下:

face = cmds.polyInfo(fe=True)[0]
[int(v) for v in face.split(':', 1)[-1].split()]

这段代码的作用是,先获取cmds.polyInfo()方法的输出,然后拿到第一个元素,再从第一个:后面的内容开始,按照空格进行分割。最后得到的是一个字符串的列表(比如['48', '49', ...]),接着通过列表推导式把这些字符串转换成整数的列表。

1
alist=[u'FACE     64:     48     49     50     51     52     54     64     74     84     94    104 \n']

使用 map 和 join:

map(lambda x:int(x), "".join(alist).split(':')[1].split())

使用列表推导式:

[int(x) for x in "".join(alist).split(':')[1].split()]

输出:

[48, 49, 50, 51, 52, 54, 64, 74, 84, 94, 104]
0

其实不需要使用 re 模块,直接用 str.split 就可以了:

In [78]: lst=[u'FACE     64:     48     49     50     51     52     54     64     74     84     94    104 \n']

In [79]: [int(i) for i in lst[0].split(':')[1].split()]
Out[79]: [48, 49, 50, 51, 52, 54, 64, 74, 84, 94, 104]

撰写回答