PYTHONLEARNME Telegram 320
سلام، اومدم یه چیزی بگم و برم 👋

امروز داشتم یه برنامه ای مینوشتم که یه سری دیتا رو میفرستاد به یه جایی و دیتایی که داشتم به شکل یه لیست بود که توش هزاران دیکشنری بود

نیاز بود که 100 تا 100 تا دیکشنری هارو از توی لیست بیارم بیرون و بفرستم به مقصد
پس اول اومدم یه همچین چیزی نوشتم
ids = []

for index, item in enumerate(iterable):
    if index % 100 == 0:
        ids_string = ','.join(ids)
        ...  # اینجا دیتا رو ارسال کردم به مقصد
        ids.clear()

    else:
        ids.append(item)


اما مشکل این بود که اگر مثلا 1020 تا آیتم توی اون لیست اولیه داشتم، فقط 1000 تاش میرفت به مقصد و 20 تا باقی میموند

پس اومدم و لیستی که داشتم رو تبدیل به یه لیست از تاپل ها کردم که توی هرتاپل 100 آیتم بود و باقی مونده هاشم توی اخرین تاپل بود که مثلا 20 آیتم توش بود

from itertools import zip_longest


def zip_long(iterable: list, count: int = 2) -> list[tuple]:
    it = [iter(iterable)] * count

    zipped = zip_longest(*it)
    result = []

    for old_tuple in zipped:
        if None in old_tuple:
            new_tuple = tuple(item for item in old_tuple if item is not None)
            result.append(new_tuple)
        else:
            result.append(old_tuple)

    return result


اینطوری روی هر تاپل فور زدم و دیگه نیاز نبود حساب کنم که 100 تا بشه چون میدونم که همشون 100 تا هستن و تاپل اخر هم باقی مونده شه

البته چون توی تاپل آخر 80 تا آیتم کمتر داریم نسبت به بقیه تاپل ها، متود zip_longest میومد و 80 تا None اضافه میکرد به تاپل آخر
پس یه فور زدم و None هارو هم حذف کردم

نتیجه اش شد فانکشن zip_long که یه لیست میگیره ازتون و تعداد آیتم های هرتاپل رو هم میگیره و نتیجه رو برمیگردونه 😉

نمیدونم چرا حس میکنم لقمه رو چرخوندم دور سرم، ولی کارمو راه انداخت
اگه راه بهتری سراغ دارید توی کامنت ها بگید 💬💔
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2



tgoop.com/pythonlearnme/320
Create:
Last Update:

سلام، اومدم یه چیزی بگم و برم 👋

امروز داشتم یه برنامه ای مینوشتم که یه سری دیتا رو میفرستاد به یه جایی و دیتایی که داشتم به شکل یه لیست بود که توش هزاران دیکشنری بود

نیاز بود که 100 تا 100 تا دیکشنری هارو از توی لیست بیارم بیرون و بفرستم به مقصد
پس اول اومدم یه همچین چیزی نوشتم

ids = []

for index, item in enumerate(iterable):
    if index % 100 == 0:
        ids_string = ','.join(ids)
        ...  # اینجا دیتا رو ارسال کردم به مقصد
        ids.clear()

    else:
        ids.append(item)


اما مشکل این بود که اگر مثلا 1020 تا آیتم توی اون لیست اولیه داشتم، فقط 1000 تاش میرفت به مقصد و 20 تا باقی میموند

پس اومدم و لیستی که داشتم رو تبدیل به یه لیست از تاپل ها کردم که توی هرتاپل 100 آیتم بود و باقی مونده هاشم توی اخرین تاپل بود که مثلا 20 آیتم توش بود

from itertools import zip_longest


def zip_long(iterable: list, count: int = 2) -> list[tuple]:
    it = [iter(iterable)] * count

    zipped = zip_longest(*it)
    result = []

    for old_tuple in zipped:
        if None in old_tuple:
            new_tuple = tuple(item for item in old_tuple if item is not None)
            result.append(new_tuple)
        else:
            result.append(old_tuple)

    return result


اینطوری روی هر تاپل فور زدم و دیگه نیاز نبود حساب کنم که 100 تا بشه چون میدونم که همشون 100 تا هستن و تاپل اخر هم باقی مونده شه

البته چون توی تاپل آخر 80 تا آیتم کمتر داریم نسبت به بقیه تاپل ها، متود zip_longest میومد و 80 تا None اضافه میکرد به تاپل آخر
پس یه فور زدم و None هارو هم حذف کردم

نتیجه اش شد فانکشن zip_long که یه لیست میگیره ازتون و تعداد آیتم های هرتاپل رو هم میگیره و نتیجه رو برمیگردونه 😉

نمیدونم چرا حس میکنم لقمه رو چرخوندم دور سرم، ولی کارمو راه انداخت
اگه راه بهتری سراغ دارید توی کامنت ها بگید 💬💔

BY 🧑‍💻PythonDev🧑‍💻


Share with your friend now:
tgoop.com/pythonlearnme/320

View MORE
Open in Telegram


Telegram News

Date: |

With the “Bear Market Screaming Therapy Group,” we’ve now transcended language. How to create a business channel on Telegram? (Tutorial) fire bomb molotov November 18 Dylan Hollingsworth yau ma tei Activate up to 20 bots Private channels are only accessible to subscribers and don’t appear in public searches. To join a private channel, you need to receive a link from the owner (administrator). A private channel is an excellent solution for companies and teams. You can also use this type of channel to write down personal notes, reflections, etc. By the way, you can make your private channel public at any moment.
from us


Telegram 🧑‍💻PythonDev🧑‍💻
FROM American