Python 将元组列表转换为该列表中使用的所有整数的列表

Python 将元组列表转换为该列表中使用的所有整数的列表,python,regex,string,list,tuples,Python,Regex,String,List,Tuples,这里是Python初学者。我有一个元组列表,如下所示: [(100,1)、(50,2)、(25,4)、(20,5)、(10,10)] 我想把它转换成 [0,2,4,5,1] 必须有一种比不断替换每个字符更快的方法: strfp1 = re.sub('\(','',str(factor_pairs)); strfp2 = re.sub('\)','',strfp1); strfp3 = re.sub('\[','',strfp2); strfp4 = re.sub(']','',strfp3);

这里是Python初学者。我有一个元组列表,如下所示:

[(100,1)、(50,2)、(25,4)、(20,5)、(10,10)]

我想把它转换成

[0,2,4,5,1]

必须有一种比不断替换每个字符更快的方法:

strfp1 = re.sub('\(','',str(factor_pairs)); strfp2 = re.sub('\)','',strfp1); strfp3 = re.sub('\[','',strfp2); strfp4 = re.sub(']','',strfp3); strfp5 = re.sub(',','',strfp4); strfp6 = re.sub(' ','',strfp5)
factor_numbers = [int(i) for i in set(strfp6)]

然而,我甚至找不到一种方法来同时替换多个不相邻的字符。我遗漏了一些明显的东西吗?

如果顺序不重要,您可以使用集合:

from itertools import chain

lst = [(100, 1), (50, 2), (25, 4), (20, 5), (10, 10)]

flst = map(lambda x: str(x), chain.from_iterable(lst))

s = set()
for x in flst:
    for i in x:
        s.add(i)

print(s)
# {'2', '1', '0', '5', '4'}
如果顺序很重要,请使用列表:

from itertools import chain

lst = [(100, 1), (50, 2), (25, 4), (20, 5), (10, 10)]

flst = map(lambda x: str(x), chain.from_iterable(lst))

s = []
for x in flst:
    for i in x:
        if i not in s:
            s.append(i)

print(s)
# ['1', '0', '5', '2', '4']

如果您想使用替换方法,确实有一种简单的方法:

import re
factor_pairs = [(100, 1), (50, 2), (25, 4), (20, 5), (10, 10)]
s = re.sub(r'[\[\]\(\), ]', '', str(factor_pairs))
factor_numbers = [int(i) for i in set(s)]

外部
[]
中指定的任何字符都将被替换。

只是一个建议,您可以将
map
的功能设置为Just
str
,如
map(str,…)
中所示。