Тема: Вилучити елементи зі списку
Доброго дня.
В мене є список
l = ['85 12/4]
Потрібно отримати
[85, 12, 4]
Допоможіть буть ласка.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Python → Вилучити елементи зі списку
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Доброго дня.
В мене є список
l = ['85 12/4]
Потрібно отримати
[85, 12, 4]
Допоможіть буть ласка.
l = [input("введіть масив:")]
l = [85, 12, 4]
print(l)
неподобається рішення?
нам ваше відношення до завдання також!
https://replace.org.ua/rules/#rule-3-5 <- тут пояснюється код
upd: за умовою яку ви надали у вас є лише SyntaxError
Доброго дня.
В мене є списокl = ['85 12/4]
Потрібно отримати
[85, 12, 4]
Допоможіть буть ласка.
У вас є список, в середині якого рядок?
Якщо так, то спробуйте це:
l[0].split()
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]
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().
І все одно не розумію, чому тема називається «вилучити елемент зі списку». Список там, наскільки можна зрозуміти, з одним елементом-рядком, який треба розбити на окремі числа. Що саме треба вилучати?
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"]])
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"]])
Це жарт?
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися