Найти - Пользователи
Полная версия: Преобразование списка в строку
Начало » Python для новичков » Преобразование списка в строку
1 2
Stright
terabayt
та весь код ошибка))
Для разбора, как и что работает, я его оставлю )))
ivsatel
Вот такой вариант, если я правильно понял задание:
b = []
a = ['1','2','3','4','5','7','8','10','12','15','21','22','23','24']
d_int = len(a) // 3
[b.append(int(x)) for x in a if int(x) not in b]
print('{0[0]}-{0[3]}, {1}, {2[0]}-{2[3]}'.format(b[:d_int:], ''.join(str(b[d_int:-d_int])).strip("]["), b[-d_int:]))
Stright
ivsatel
>>> b = []
>>> a = ['1','2','3','4','5','7','8','10','12','15','21','22','23','24']
>>> d_int = len(a) // 3
>>> [b.append(int(x)) for x in a if int(x) not in b]
[None, None, None, None, None, None, None, None, None, None, None, None, None, None]
>>> print('{0[0]}-{0[3]}, {1}, {2[0]}-{2[3]}'.format(b[:d_int:], ''.join(str(b[d_int:-d_int])).strip
("]["), b[-d_int:]))
1-4, 5, 7, 8, 10, 12, 15, 21-24
>>>
А надо ‘1-5, 7, 8, 10, 12, 15, 21-24’

Shaman
l = ['1','2','3','4','5','7','8','10','12','15','21','22','23','24']
def rf(a, b):
    if abs(int(a[-1]) - int(b)) == 1:
        if len(a) > 1 and a[-2] == '-':
            a[-1] = b
            return a
        return a + ['-', b]
    return a + [',', b]
print ''.join(reduce(rf, l[1:], [l[0]]))
>>> 1-5,7-8,10,12,15,21-24
Между 7 и 8 должна быть ‘,’

Большое спасибо всем откликнувшимся, очень помогли, тему можно закрывать
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB