2016-04-12 13 views
0

katılmak (2,3 | 5,6 | 8,9), ancak iadeler benim işlevi boş bir dizePython liste yineleme ve ben şöyle bir dize döndüren bir işlev yazmaya çalışıyorum

numbers = [(4,5,6),(1,2,3),(7,8,9)] 
def get_numbers(x): 
    mystring = "" 
    x = sorted(x) 
    for n in x: 
    if mystring is not "": 
     mystring+="|" 
    mystring+",".join(str(z) for z in n[1:]) 
    return mystring 

Bunu nasıl düzeltebilirim?

+0

Nasıl elde edilir? [(4,5,6), (1,2,3), (7,8,9)] 'dan '' (2,3 | 5,6 | 8,9) ''? – timgeb

+0

Bu yüzden, [1:] 'ın hile ile tahmin ediyorum – th3an0maly

cevap

2

Küçük bir hata var. Bunun yerine mystring += ait mystring= daktilo

numbers = [(4,5,6),(1,2,3),(7,8,9)] 
def get_numbers(x): 
    mystring = "" 
    x = sorted(x) 
    for n in x: 
    if mystring is not "": 
     mystring+="|" 
    mystring+=",".join(str(z) for z in n[1:]) 
    return mystring 
1

Kullanım dizeye değişim listesi ve demet için katılmak

values = map(lambda x: x[1:], sorted(numbers)) 

print "|".join([",".join(map(str, value)) for value in values]) 
0

sadece eğlence için, bir çirkin bir liner ;-)

'(' + '|'.join([','.join(map(str, l[1:])) for l in numbers]) + ')' 

ben ayrıca yazdığınız gibi bir parantez istediğiniz gibi parantez ekledi.

İlgili konular