1

Тема: Вилучити елементи зі списку

Доброго дня.
В мене є список

l = ['85 12/4]

Потрібно отримати

[85, 12, 4]

Допоможіть буть ласка.

2 Востаннє редагувалося mamkin haker (14.11.2021 18:59:00)

Re: Вилучити елементи зі списку

l = [input("введіть масив:")]
l = [85, 12, 4]
print(l)

неподобається рішення?
нам ваше відношення до завдання також!
https://replace.org.ua/rules/#rule-3-5 <- тут пояснюється код

upd: за умовою  яку ви надали у вас є лише SyntaxError

Подякували: ITrobot1

3

Re: Вилучити елементи зі списку

sahsafg80 написав:

Доброго дня.
В мене є список

l = ['85 12/4]

Потрібно отримати

[85, 12, 4]

Допоможіть буть ласка.

У вас є список, в середині якого рядок?
Якщо так, то спробуйте це:

l[0].split()
Подякували: P.Y.1

4 Востаннє редагувалося P.Y. (28.11.2021 21:38:46)

Re: Вилучити елементи зі списку

ITrobot написав:
sahsafg80 написав:

Доброго дня.
В мене є список

l = ['85 12/4]

Потрібно отримати

[85, 12, 4]

Допоможіть буть ласка.

У вас є список, в середині якого рядок?
Якщо так, то спробуйте це:

l[0].split()

Складність у тому, що split використовує як роздільник лише пробіли (у т.ч., розриви рядка), а в прикладі там використано також і «/».

Можна обійти це, попередньо замінивши всі слеші на пробіли:

l[0].replace('/', ' ').split()

Або можна, наприклад, розбити по пробілах, тоді кожен фрагмент розбити по слешах (використавши .split('/') ), тоді все перегрупувати в один список — але так складніше. Якщо ж роздільником може бути будь-який символ, крім цифри, то потрібна якась більш складна заміна (можна використати функцію sub з модуля re, щоб задати заміну регулярним виразом)...

І так, кожен елемент потім ще треба перетворити з рядка на число:

l=[int(i) for i in l]
Подякували: ITrobot1

5

Re: Вилучити елементи зі списку

P.Y. написав:
ITrobot написав:
sahsafg80 написав:

Доброго дня.
В мене є список

l = ['85 12/4]

Потрібно отримати

[85, 12, 4]

Допоможіть буть ласка.

У вас є список, в середині якого рядок?
Якщо так, то спробуйте це:

l[0].split()

Складність у тому, що split використовує як роздільник лише пробіли (у т.ч., розриви рядка), а в прикладі там використано також і «/».

Можна обійти це, попередньо замінивши всі слеші на пробіли:

l[0].replace('/', ' ').split()

Або можна, наприклад, розбити по пробілах, тоді кожен фрагмент розбити по слешах (використавши .split('/') ), тоді все перегрупувати в один список — але так складніше. Якщо ж роздільником може бути будь-який символ, крім цифри, то потрібна якась більш складна заміна (можна використати функцію sub з модуля re, щоб задати заміну регулярним виразом)...

І так, кожен елемент потім ще треба перетворити з рядка на число:

l=[int(i) for i in l]

Дякую, не знав про replace().

6

Re: Вилучити елементи зі списку

І все одно не розумію, чому тема називається «вилучити елемент зі списку». Список там, наскільки можна зрозуміти, з одним елементом-рядком, який треба розбити на окремі числа. Що саме треба вилучати?

7

Re: Вилучити елементи зі списку

import re
MIXED_NUMERAL_REGEX = re.compile(r"(?P<whole>\d+) (?P<numerator>\d+)/(?P<denominator>\d+)")
def decode_mixed(s):
    match = MIXED_NUMERAL_REGEX.fullmatch(s)
    if match:
        return [int(match.group('whole')), int(match.group('numerator')), int(match.group('denominator'))]
    else:
        return None

print([decode_mixed(x) for x in ["85 12/4"]])

8

Re: Вилучити елементи зі списку

koala написав:
import re
MIXED_NUMERAL_REGEX = re.compile(r"(?P<whole>\d+) (?P<numerator>\d+)/(?P<denominator>\d+)")
def decode_mixed(s):
    match = MIXED_NUMERAL_REGEX.fullmatch(s)
    if match:
        return [int(match.group('whole')), int(match.group('numerator')), int(match.group('denominator'))]
    else:
        return None

print([decode_mixed(x) for x in ["85 12/4"]])

Це жарт?  :D  :D