Ответы пользователя по тегу Python
  • Как можно преобразовать такую строку в словарь?

    @mentor2
    Задать словарь можно (5 вариантов: 4 через dict, один явно)
    >>> d1 = dict({"id": 1948, "name": "Washer", "size": 3})
    >>> d2 = dict(id=1948, name="Washer", size=3)
    >>> d3 = dict([("id", 1948), ("name", "Washer"), ("size", 3)])
    >>> d4 = dict(zip(("id", "name", "size"),(1948, "Washer", 3)))
    >>> d5 = {"id": 1948, "name": "Washer", "size": 3}
    вот и подгоняйте...
    еще есть методы типа сетдефолт , а главное см коллекшнз, там описан Юзер.Дикт
    (см. стр 105 Ромальо, Питон к вершинам мастерства....)
    Ответ написан
    Комментировать
  • Как генерировать случайные комбинации символов без повторений на python?

    @mentor2
    извините, но очень непитонячий, неидиоматичный код!!

    Когда говорят об уникальности , неповторяемости элементов в финальной
    коллекции, то либо применяйте множество, либо сэмплуйте, типа
    >>> random.sample(symbs,k=8)
    ['z', 'h', 'V', 'T', 'l', 'j', 'g', 'c']
    и зачем список, когда вы всё в стрОках делаете...
    не проще ли:

    >>> import string
    >>> symbs = string.digits + string.ascii_letters
    >>> # а, если надо всё-таки список, то делайте классику
    >>> symbs = ','.join(symbs)
    >>> symbs = symbs.split(sep =',')
    >>>
    и совсем не понятно
    "исключить повторения при генерации таких комбинаций" каких?
    внутри восьмерок, которые ранд-интом выдёргиваются или повторений из
    самих восьмерок в восьмидесятитысячной генерируемых
    комбинаций (от первого цикла)

    что за имя x_ ?? зачем оно??
    вы растите т (в предпоследней строчке ), но нафиг?, она от 80000
    и вверх и никогда не будет равна тт, т.е. нулю, вы плохо списали.
    такие решения я у своих студентов не принимаю.....
    В идеале такие задачи в 2-3 строки и через разные комприхенкшины...
    Ответ написан
    Комментировать
  • Как создать список из нескольких списков python?

    @mentor2
    Задача наверняка на слайсы.
    >>> c = [1, 9, 16, 17, 28, 28, 35, 40,]
    пары не пересекаются, значит бежите по це ровно лен(це) // 2 раз,
    но, главное, сам це на ходу менять нельзя, т.е. надо делать це2, и через копи.копи(це)

    >>> import copy
    >>> c2 = copy.copy(c)
    >>> i, j, i2, j2 = 0, 1, 0, 1
    >>> for x in range(len(c) // 2):
    ... ...if c[i] < c [j]:
    ... ... ...c2[i2:j2] = range(c[i], c[j]) # тело иф - одна строка
    ... ...i2 = j2 + (c[j]-c[i])
    ... ...j2 = j2 + (c[j]-c[i])+1
    ... ...i, j = j+1, j+2
    ...
    >> c2
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 28, 35, 36, 37, 38, 39, 35, 40]
    >>> c
    [1, 9, 16, 17, 28, 28, 35, 40]
    >>
    Ответ написан
    Комментировать
  • Есть ли функция в Python, находящая отличную от других единицу списка?

    @mentor2
    >>> while min(a) != max(a):
    ... a1 = a.pop()
    ...
    >>> a1
    2
    >>>
    Ответ написан
    Комментировать
  • Как решить задачу Иосифа?

    @mentor2
    См. Грехэм, Кнут, Паташник "Конкретная математика", Мир 2006, стр 25
    Ответ написан
    Комментировать