2017-03-13 117 views
0

最近我开发了一个程序,它接受一个数字列表,并找到可以被3整除的最大数字。 但是我不明白如何将其更改为正常列表。下面是一个例子:我有你如何从元组列表中删除()和逗号

[(3, 3, 4), (3, 4, 3), (3, 3, 4)] 

我想有

[334,343,334] 

感谢您的帮助

从很大的帮助我收到了一条不寻常的错误做与元组继再次感谢这里的帮助,

import intercools 
list1 = [] 
stuff = [1, 2, 3] 
for L in range(0, len(stuff+1): 
    for subset in itertools.combinations(stuff, L): 
     list1.append(subset) 
print(list1) 
sep = [map(str,l)for l in list1] 
nl = [int(''.join(s)) for s in sep] 
print(nl) 

回答

1

而另一个:

ml = [(3, 3, 4), (3, 4, 3), (3, 3, 4)] 

sep = [map(str,l) for l in ml] 

nl = [int(''.join(s)) for s in sep] 

print(nl) # [334, 343, 334] 
0

您可以literal_evalast模块做这样的方式:

from ast import literal_eval 

a = [(3, 3, 4), (3, 4, 3), (3, 3, 4)] 
b = [literal_eval("".join(str(j) for j in k)) for k in a] 
print(b) 

输出:

[334, 343, 334] 

你也可以像这样:

a = [(3, 3, 4), (3, 4, 3), (3, 3, 4)] 
b = [int("".join(str(j) for j in k)) for k in a] 

此外,您还可以使用map方法来做到这一点:

a = [(3, 3, 4), (3, 4, 3), (3, 3, 4)] 
# Or using literal_eval 
b = [int("".join(map(str, k))) for k in a] 
0

Python列表理解是你的朋友。

t = [(3, 3, 4), (3, 4, 3), (3, 3, 4)] 
str_tuple = [(str(x), str(y), str(y)) for (x, y, z) in t] 
final = [int(''.join(x)) for x in str_tuple] 
# [334, 343, 334] 
1

考虑:

>>> LoT=[(3, 3, 4), (3, 4, 3), (3, 3, 4)] 

您可以使用一个字符串加入了元组元素在一起,然后重铸为int:

>>> [int(''.join(map(str, t))) for t in LoT] 
[334, 343, 334]