2014-01-30 90 views
0

如何刪除 「(」 「)」 的形式如何從列表中的元組中刪除字符?

[('(10', '40)'), ('(40', '30)'), ('(20', '20)')] 

由蟒蛇?

+5

你能否提供更多代碼來證明你是如何達到這一點的?這個問題可能與您的數據生成方式有關,並且可能會以不同的方式處理,以避免必須解決此「問題」。 –

+1

我嘗試格式化字符串:((10 40),(40 30),(20 20),(30 10))到元組列表。 – user7172

+0

@flup你是對的,我刪除我的評論。 –

回答

1

根據你目前如何儲存該列表:

def to_int(s): 
    s = ''.join(ch for ch in s if ch.isdigit()) 
    return int(s) 

lst = [('(10', '40)'), ('(40', '30)'), ('(20', '20)')] 

lst = [(to_int(a), to_int(b)) for a,b in lst] # => [(10, 40), (40, 30), (20, 20)] 

import ast 

s = "[('(10', '40)'), ('(40', '30)'), ('(20', '20)')]" 
s = s.replace("'(", "'").replace(")'", "'") 
lst = ast.literal_eval(s)    # => [('10', '40'), ('40', '30'), ('20', '20')] 
lst = [(int(a), int(b)) for a,b in lst] # => [(10, 40), (40, 30), (20, 20)] 
0
>>> L = [('(10', '40)'), ('(40', '30)'), ('(20', '20)')] 
>>> [tuple((subl[0].lstrip("("), subl[1].rstrip(")"))) for subl in L] 
[('10', '40'), ('40', '30'), ('20', '20')] 

或者,如果你婉的數字在你的元組最終是int S:

>>> [tuple((int(subl[0].lstrip("(")), int(subl[1].rstrip(")")))) for subl in L] 
[(10, 40), (40, 30), (20, 20)] 
0

您可以致電.strip('()')個別項目(如果他們是字符串,如在您的示例中)去除尾隨()

有以應用在單要素多種方式:

列表理解(最Python的)

a = [tuple(x.strip('()') for x in y) for y in a] 

maplambda(有趣的)

的Python 3 :

def cleanup(a: "list<tuple<str>>") -> "list<tuple<int>>": 
    return list(map(lambda y: tuple(map(lambda x: x.strip('()'), y)), a)) 

a = cleanup(a) 

的Python 2:

def cleanup(a): 
    return map(lambda y: tuple(map(lambda x: x.strip('()'), y)), a) 

a = cleanup(a) 
0

過程中的原始字符串來代替。我們稱之爲a

a='((10 40), (40 30), (20 20), (30 10))',您可以撥打

[tuple(x[1:-1].split(' ')) for x in a[1:-1].split(', ')] 

從字符串的[1:-1]裝飾斗拱,split而分裂成字符串字符串列表。 for是一種理解。

0
s = "((10 40), (40 30), (20 20), (30 10))" 
print [[int(x) for x in inner.strip('()').split()] for inner in s.split(',')] 

# or if you actually need tuples: 
tuple([tuple([int(x) for x in inner.strip('()').split()]) for inner in s.split(',')]) 
2

直截了當,使用列表理解和literal_eval。

>>> from ast import literal_eval 
>>> tuple_list = [('(10', '40)'), ('(40', '30)'), ('(20', '20)')] 
>>> [literal_eval(','.join(i)) for i in tuple_list] 
[(10, 40), (40, 30), (20, 20)]