Ответы пользователя по тегу Python
  • Как найти расхождения строк в двух txt файлах?

    @dmshar
    lt_1=['111111;dflgkdkfg','222222;DFLKDFG','33333;dfgdfgdfgdfg','4444444;xxxxxxxxx','666666;ttt']
    lt_2=['555555;dflgkdkfg','222222;fgdfgdfgdfgdfgdfgdfg','4444444;dfgdfgdfgdfg','555555;yyy']
    lt_3=[]
    for unit1 in  lt_1:
        for unit2 in  lt_2: 
            if unit1.split(';')[0]==unit2.split(';')[0]:
                lt_3.append(unit1)
    print(lt_3)


    Результат:
    ['222222;DFLKDFG', '4444444;xxxxxxxxx']

    Перед этим фрагментом читаете оба файла (100МВ - это ни о чем), заполняя lt_1 и lt_2 после этого фрагмента - записываете lt_3 в файл.

    P.S.
    Можно еще и так:
    lt_22=[unit2.split(';')[0] for unit2 in lt_2]
    for unit1 in  lt_1:
        if unit1.split(';')[0] in lt_22:
            lt_3.append(unit1)


    Или даже так:
    lt_22=set([unit2.split(';')[0] for unit2 in lt_2])

    Результат во всех трех реализациях одинаков, а вот что быстрее - надо проверять.
    Ответ написан
    3 комментария
  • Почему не работает else в пайтоне?

    @dmshar
    В Python все работает, и else тоже. Это вы не удосужились выучить Python. Впрочем, и Pascal - судя по всему - тоже. Потому что конструкции типа
    if (x:=1)
    - ошибочны на обоих языках. А уж что вы хотели сказать вот этим:

    x:float
    y:float
    y1:float


    - вообще загадка загадочная.
    Ответ написан
  • Как объединить несколько дата сетов?

    @dmshar
    Что такое "полуручная идея"? и что вы желаете улучшить? Если сделать вашу программу независимой от количества файлов, то вспоминаем, что на втором уроке по Python вам рассказывали про циклы и о том, когда, как и зачем их использовать. В вашем случае это будет выглядеть приметно так:

    df=pd.DataFrame()
    for i,unit in enumerate(filess):
        df=df.append(pd.read_excel(unit), ignore_index=True)


    Ну а в точности "подогнать" под свой код - это как-нибудь самостоятельно.
    Ответ написан
    Комментировать
  • Как получить значение столбца списком?

    @dmshar
    active=[]
    for row in result:
        active.append(row[0])
    return active
    Ответ написан
    3 комментария
  • Как сделать так, чтобы пайтон, при выполнении функции, мог еще использовать. Тоесть началась обработка, где тайм на 1 час, а остальной код не работае?

    @dmshar
    Нет, объяснили вы разумеется очень "не нормально". Прочитайте сами, что написали. Ваш скрипт работает ровно так, как он и должен работать. Останавливаться, ждать заданный промежуток времени и после продолжать свою работу.
    Если вашу загадочную фразу "чтобы пайтон, при выполнении функции, мог еще использовать." понимать, как параллельную работу двух программ, то для этого вам необходимо использовать средства соответствующих библиотек организации параллельных вычислений.
    Начать изучение можете, например, вот отсюда:
    onreader.mdl.ru/PythonParallelProgrammingCookbook....
    https://russianblogs.com/article/6490208477/
    https://habr.com/ru/post/167503/
    Ответ написан
    Комментировать
  • Как правильно оформить матрицу?

    @dmshar
    n, m= 19,19
    spiral = [[0] * m for _ in range(n)]
    c = 'x'
    wt=m
    hg=n
    i=1
    j=1
    while wt-i>=2:
        for k in range(i,wt-1):  
           spiral[j][k] = c 
        if hg-j>3:
            for l in range(j,hg-1):  
                spiral[l][wt-2] = c   
            for k in range(i,wt-2):  
                spiral[hg-2][k] = c 
            for l in range(j+2,hg-1):  
                spiral[l][i] = c 
            spiral[j+2][i+1] = c                    
        i+=2
        j+=2
        wt-=2
        hg-=2
    for i in range(n):  
        for j in range(m):
            print(str(spiral[i][j]).ljust(3), end=' ')
        print()


    Результат:
    0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
    0   x   x   x   x   x   x   x   x   x   x   x   x   x   x   x   x   x   0   
    0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   x   0   
    0   x   x   x   x   x   x   x   x   x   x   x   x   x   x   x   0   x   0   
    0   x   0   0   0   0   0   0   0   0   0   0   0   0   0   x   0   x   0   
    0   x   0   x   x   x   x   x   x   x   x   x   x   x   0   x   0   x   0   
    0   x   0   x   0   0   0   0   0   0   0   0   0   x   0   x   0   x   0   
    0   x   0   x   0   x   x   x   x   x   x   x   0   x   0   x   0   x   0   
    0   x   0   x   0   x   0   0   0   0   0   x   0   x   0   x   0   x   0   
    0   x   0   x   0   x   0   x   x   x   0   x   0   x   0   x   0   x   0   
    0   x   0   x   0   x   0   x   0   0   0   x   0   x   0   x   0   x   0   
    0   x   0   x   0   x   0   x   x   x   x   x   0   x   0   x   0   x   0   
    0   x   0   x   0   x   0   0   0   0   0   0   0   x   0   x   0   x   0   
    0   x   0   x   0   x   x   x   x   x   x   x   x   x   0   x   0   x   0   
    0   x   0   x   0   0   0   0   0   0   0   0   0   0   0   x   0   x   0   
    0   x   0   x   x   x   x   x   x   x   x   x   x   x   x   x   0   x   0   
    0   x   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   x   0   
    0   x   x   x   x   x   x   x   x   x   x   x   x   x   x   x   x   x   0   
    0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    Ответ написан
    1 комментарий
  • Как заменить максимальный элемент в матрице на 0?

    @dmshar
    Вы перед тем как писать вопрос хотя-бы один раз перечитайте, что вы пишете и попытайтесь понять, что-же вы написали.

    1. "произвести сложение элементов этих массивов" Какое "сложение" ? Двух массивов между собой? Всех элементов внутри каждого из массивов? Элементов обоих массивов?
    Попробуйте свою мысль выразить четко.
    2. заменить максимальный элемент на «0» Максимальный элемент в массиве? В обоих массивов? Или - если это выражение трактовать как продолжение предыдущего - то максимальный из двух сумм?
    3. Но с последним у меня явно проблемы - вы хотите сказать, что с "первым" у вас проблем нет?
    Z = np.random.random((5,3))
    Y = np.random.random((3,2))
    Z[Z.argmax()] = 0
    Y[Y.argmax()] = 0
    Traceback (most recent call last):
      File "<ipython-input-2-4e17f53e0d83>", line 4, in <module>
        Y[Y.argmax()] = 0
    IndexError: index 4 is out of bounds for axis 0 with size 3

    Попробуйте все-таки внятно объяснить, что вам нужно.

    P.S. После попытки автора вопроса его переформулировать, стало немного яснее, хотя и не на 100%. Если я правильно понял, то вашИ задачИ решаЮтся вот так:

    Z = np.random.random((5,3))
    Y = np.random.random((3,2))
    sZ=Z.sum()
    sY=Y.sum()
    print(sZ, sY)
    Z[np.unravel_index(np.argmax(Z), Z.shape)]=0
    Y[np.unravel_index(np.argmax(Y), Y.shape)]=0


    И работает "всегда", а не "через раз", и результат вроде тот, что вы хотели
    Ответ написан
    Комментировать
  • Как осуществить запись с микрофона и динамиков(уст-во вывода) в один файл?

    @dmshar
    Непонятно, что такое "писать с динамиков". Давайте разбираться.
    На динамик выводиться звук. Этот звук формируется тем устройством (компьютером), к которому эти динамики подключены. Компьютер выводит звук не "по щучьему велению", а потому, что он получает описание того, что выводить в виде соответствующего файла. Т.е информация в компьютере сначала присутствует, а уж потом выводится на динамик. Что вы хотите при этом "записывать"? Через какое устройство ввода?? Дублировать уже имеющийся файл? Зачем?

    А вот микрофон - другое дело. Это устройство ввода информацию. Он преобразует звук в сигнал, а сигнал записывает в файл. Поэтому вы его и можете "записать".

    Так что же на самом деле вы хотите сделать?

    P.S. Когда 50 лет назад я "писал концерт Битлз, который передавали ББС", я к динамику радиоприемника подносил микрофон магнитофона. Вы что, хотите повторить этот фокус на компьютере? Зачем?
    Ответ написан
  • Как активно менять размер окна mss numpy?

    @dmshar
    А что, у вас доступ к интернет уже отключили?
    Чем вас не устраивают ответы на ваш вопрос, которые приведены в документации к тому пакету, который вы решили пользовать?
    https://python-mss.readthedocs.io/examples.html
    Ответ написан
  • Как можно улучшить код?

    @dmshar
    Да что угодно может пойти не так. Вот задаю выражение "10+5/0" и получаю
    Enter your expression:"10+5/0"
    -1

    И как? Это "так" или "не так"?
    А вот это
    Enter your expression:"(10+5)/0"
    -1
    Ответ написан
  • Как научить каскад распознавать лица при разной освещенности?

    @dmshar
    Вопрос первый. А вы свою сеть обучали только на "хорошо освещенных" изображениях или на всех, в том числе и на "темных"?

    Вопрос второй. А что вас собственно удивляет?
    Вы никогда не обращали внимание на то, что даже люди слабо освещенные объекты распознают хуже, чем хорошо освещенные? Тем более перепутать лицо человека в темноте - это запросто.
    Было бы очень странно, если бы системы работали не так. Все что вы можете сделать - немного "подправить" изображение, поигравшись с их яркостью, насыщенностью и пр. А уж потом натравливать на них вашу нейросеть. Только не забудьте перед этим нейросетку обучить именно на предварительно обработанных фото.
    Совсем "безумная" идея - попробовать работать с фото, предварительно переведенными Grayscale.
    Указанные процедуры (кажется) можно сделать средствами OpenCV.
    Ответ написан
    Комментировать
  • Как исправить ошибку в присвоении переменной?

    @dmshar
    Господи, ну когда же народ научиться сперва включать мозги и самостоятельно искать ответы на такие простейшие вопросы, а уж потом писать вопросы на форум!
    Ну написано же, ясно, четко, ОДНОЗНАЧНО:
    price_1 = code['price']
    TypeError: string indices must be integers"

    Ну что же тут не ясно!!! В любом IDE в менеджере переменных сразу же видно, что
    в объекте code в момент выполнения строки
    price_1 = code['price']
    находится строковое значение '12345'. СТРОКОВОЕ!!!! А в строке индексом может быть исключительно int-значение. А вы пытаетесь вместо индекса указать опять-таки строку
    'price'

    Только не спрашиваете, как это исправить. Потому что понять логику вашей программы, в которой вы сначала в создаете объект
    code
    , копируя в него элемент словаря
    goods[name]
    , а потом этот же объект внутри цикла используете как объект - итератор цикла -
    for code in store:
    , т.е. перебирая объекты уже совершенно другого словаря
    store
    лично я не в силах. Чего вы хотели-то от такой дивной конструкции?

    Совет: сначала исправьте логику программы, а потом - может и синтаксис исправлять не придется.
    И еще совет. Откройте учебник по Python, найдите в нем главу про словари, потом посмотрите, как делать обход словаря. Это азы! И разберитесь, в чем разница между следующими тремя конструкциями:
    for val in dict.values()
    for key in dict.keys():
    for key in dict:
    Ответ написан
    1 комментарий
  • Python библиотека numpy не правильно загружает массив. Как поправить?

    @dmshar
    Потому что dump - это не запись в файл.
    Не стоить использовать инструмент, не понимая как он работает.
    В любом учебнике по numpy (если его читать, конечно) можно найти:
    Запись массива в файл - метод np.save()
    Чтение массива из фала - метод np.load()
    Ну, может еще для работы с данными в текстовом формате -numpy.savetxt() и numpy.loadtxt()
    Хотите в бинарном виде - np.tofile() и np.fromfile()
    Вот и пользуйтесь инструментами по назначению на здоровье.
    Ответ написан
    Комментировать
  • IndexError: list index out of range почему так?

    @dmshar
    Ну так вам же ясно написали list index out of range. Вы пробовали это выражение перевести? А понять?
    У вас в файле две записи.
    Вот тут data_csv_read[password_plus] вы наверное думаете, что обращаетесь к полю "пароль" вашей текущей записи? На самом деле вы обращаетесь к второму элементу списка data_csv_read, потому что предварительно написали password_plus = int(2). Т.е. по факту имеем
    data_csv_read[2]
    а таких записей у вас всего две. очевидно надо было писать что-то вроде

    data_csv_read[i][password_plus]

    Но это, конечно, не все проблемы, которые у вас есть.
    Вызывает мягко говоря недоумение вот этот фрагмент:

    for i in range(games_len):
      game_plus = int(0)
      login_plus = int(1)
      password_plus = int(2)
     ..........
      game_plus += 1
      login_plus += 1
      password_plus += 1

    Вас не смущает, что ПРИ КАЖДОЙ ИТЕРАЦИИ вашего цикла вы выполняете действия с одними и теми-же значениями game_plus, login_plus, password_plus и что три последние строчки указанного фрагмента в таком случае просто бессмысленны?

    Но и это еще не все.
    Вас не смущает вот эта последовательность:
    data_csv_read = ""
    data_csv_read.append((game_csv, login_csv, password_csv))

    при том, что строковый объект не имеет метода append?

    Ну и еще пару ляпов, о которых говорить пока даже рано. Может все-таки вы сначала прочитаете какую-нибудь книжечку по Python, попробуете повыполнять упражнения в порядке "от простого к сложного", а не будете пытаться писать код, который вам пока "не по зубам"? Иначе так и будете за каждым вопросом и ошибкой на форум бегать, пока всем не надоест отвечать на детские вопросы.
    Ответ написан
    Комментировать
  • Как сделать нейросеть по изменению изображения?

    @dmshar
    Да, причем таких пар "изначальное"-"измененное" вам для обучения сети надо подать пару тысяч штук.
    Только вот "сделать нейросеть" и "обучить нейросеть" - понятия совершенно различные.
    Ответ написан
  • Как n-ое количество элементов списка превратить в n-ое количество строк?

    @dmshar
    Ну, например, вот так (я слегка усложнил ваш пример, но и в простейшем случае, когда входные данные в точности такие, как в вопросе код будет работать)

    lt=[['Volvo', 'Xc90', '2017', 'Gray',['A','B','C','D'], '2.0L'], 'YV4102XK8H1144180', 'Copart', 
        '69990071', 'Run And Drive', 'Side', '33554 мили (Actual)', 
        ['Volvo', 'Xc90', '2017', 'Gray', '2.0L'],'07.02.2022']
    def fl_list(l):
        fl=[]
        for sl in l:
            if type(sl)!=list:           
                fl.append(sl)
            else:
                fl=fl+fl_list(sl)
        return fl
    flt=fl_list(lt)
    print(flt)

    Результат:
    ['Volvo', 'Xc90', '2017', 'Gray', 'A', 'B', 'C', 'D', '2.0L', 'YV4102XK8H1144180', 'Copart', '69990071', 'Run And Drive', 'Side', '33554 мили (Actual)', 'Volvo', 'Xc90', '2017', 'Gray', '2.0L', '07.02.2022']
    Ответ написан
  • В чем проблема решения?

    @dmshar
    Может вы не будете считать, что все вокруг обязаны знать, что за задачу вы решаете? Не код, который вы очевидно написали с ошибкой, а саму исходную задачу?
    А поскольку вы этого не делаете, то сообщаю вам, что ваш код падает с указанной ошибкой например в случае, если на его вход будет подано число. Падает он и при попытке ввести строку из одного символа. Похоже вы отладкой своего кода особо не заморачивались. Может и в каких других ситуациях он падает, но коль скоро условие задачи вы засекретили - то дальше придется разбираться самому.
    И, кстати, IDE или нет - тут ни при чем. Он падает в указанных случаях всегда и везде.
    Ответ написан
    Комментировать
  • Как вывести только определенные элементы массива?

    @dmshar
    Читал-читал, но ничего не понял. Причем тут TKINTER, причем тут CSV?? Причем тут простыня кода ?
    Все что удалось понять из дополнения, это то, что вам из списка
    [[('rq', 'rq', 178.0, -8.0), ('ty', 'ty', 189.0, -4.0)], 
    [('rt', 'rt', 190.0, -3.0), ('my', 'my', 170.0, -0.3)], 
    [('js', 'js', 179.0, 0.3), ('a ', 'a ', 156.0, 0.4)], 
    [('ra', 'ra', 156.0, 0.8), ('mm ', 'mm', 180.0, 1.0)]]

    Надо получить список
    [[('rq', 'rq'), ('ty', 'ty')], 
    [('rt', 'rt'), ('my', 'my')], 
    [('js', 'js'), ('a ', 'a ')], 
    [('ra', 'ra'), ('mm ', 'mm')]]


    Если так, то это элементарно:
    it=[[('rq', 'rq', 178.0, -8.0), ('ty', 'ty', 189.0, -4.0)],
        [('rt', 'rt', 190.0, -3.0), ('my', 'my', 170.0, -0.3)],
        [('js', 'js', 179.0, 0.3),  ('a ', 'a ', 156.0, 0.4)],
        [('ra', 'ra', 156.0, 0.8),  ('mm ', 'mm', 180.0, 1.0)]]
    print(it)
    ot=[]
    for el in it:
        ot.append([el[0][0:2],el[1][0:2]])
    print(ot)

    Результат работы - показан выше.
    Если вы не это имели ввиду - то уточняйте свой вопрос, что-бы его можно было понять.
    Ответ написан
    Комментировать
  • Python как обновить вывод в консоли?

    @dmshar
    Ну, например, так:
    ts = ['1 ядро: 50 s',
    '2 ядро: 43 s',
    '3 ядро: 55 s']
    for ln in ts:
        print(ln, end="\r")


    Если же вам надо кардинальное решение, с обновлением всей консоли, то вот так:
    (я тут навставлял задержек и смещений, что-бы лучше был виден результат, в реальной программе это конечно надо будет подчистить под ваши конкретные требования)

    import time
    ts = ['1 ядро: 50 s',
    '2 ядро: 43 s',
    '3 ядро: 55 s',
    '4 ядро 88  s']
       
    print(ts[0])
    print(ts[1])
    time.sleep(3)
    print("\033[H\033[J ")
    print(ts[2])
    print(ts[3])
    time.sleep(3)
    print("\033[H\033[J ")
    print(ts[0])
    print(ts[1])


    В Windows работает.
    Ответ написан
    Комментировать
  • Могу ли я увеличить цену в столбце файла CSV через Python?

    @dmshar
    Если ваш вопрос заключен в фразе "Могу ли я увеличить цену в столбце файла CSV через Python?" - то ответ "да".
    Если же на самом деле вас интересует вопрос "но может есть вариант разумнее?" - ответ на него можно будет дать тогда, когда вы ответите на два следующих вопроса:
    1. "Я думал идти циклом по каждой строке этой колонки" - покажите, как именно вы это собрались делать?
    2. "Есть огромный файл CSV." - какой размер файла с вашей точки зрения можно назвать "огромным"?
    Ответ написан
    Комментировать