Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 2, 2011 16:02:09

sansan
От:
Зарегистрирован: 2011-02-02
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

получение элементов из списка по началу их названия

имеется список Н: Как мне получить из этого списка элементы, которые начинается с “OBpl” и записать их в другой список?



Офлайн

#2 Фев. 2, 2011 16:09:27

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

получение элементов из списка по началу их названия

А что вы уже пробовали?
Код покажите



Офлайн

#3 Фев. 2, 2011 16:27:03

Kogrom
От:
Зарегистрирован: 2009-12-03
Сообщения: 160
Репутация: +  0  -
Профиль   Отправить e-mail  

получение элементов из списка по началу их названия

Для справки: можно воспользоваться startswith.



Офлайн

#4 Фев. 2, 2011 16:30:32

sansan
От:
Зарегистрирован: 2011-02-02
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

получение элементов из списка по началу их названия

я пока не знаю как получить элемент вот и спрашиваю… наверно что-то вроде
a=
b=
for x in a:
if x==“OBpl”+???:
b.append(x)



Офлайн

#5 Фев. 2, 2011 16:33:48

sansan
От:
Зарегистрирован: 2011-02-02
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

получение элементов из списка по началу их названия

Kogrom а можешь написать этот скриптик?



Офлайн

#6 Фев. 2, 2011 16:39:34

Kogrom
От:
Зарегистрирован: 2009-12-03
Сообщения: 160
Репутация: +  0  -
Профиль   Отправить e-mail  

получение элементов из списка по началу их названия

a=["OBpl2", "OBtl", "OBpl3"]
b=[s for s in a if s.startswith("OBpl")]
c=[s for s in a if "OBpl" in s]



Офлайн

#7 Фев. 2, 2011 16:43:28

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

получение элементов из списка по началу их названия

Вариант раз:

>>> [item for item in ["OBpl2", "OBtl", "OBpl3"] if item.startswith("OBpl")]
['OBpl2', 'OBpl3']
вариант два:
>>> filter(lambda item: item.startswith("OBpl"),["OBpl2", "OBtl", "OBpl3"])
['OBpl2', 'OBpl3']



Офлайн

#8 Фев. 2, 2011 16:43:35

alexx11
От:
Зарегистрирован: 2010-05-13
Сообщения: 208
Репутация: +  0  -
Профиль   Отправить e-mail  

получение элементов из списка по началу их названия

sansan
Вот парочку вариантов:

l = ["".join([chr(random.randint(97, 122)) for i in range(random.randint(5,10))]) for i in range(100000)]
def f1(sub):
l_sub = len(sub)
return [s for s in l if s[:l_sub] == sub]

def f2(sub):
return [s for s in l if s.startswith(sub)]
А вот результаты:
>>> cProfile.run("f1('abc')")
4 function calls in 0.130 CPU seconds

Ordered by: standard name

ncalls tottime percall cumtime percall filename:lineno(function)
1 0.130 0.130 0.130 0.130 <stdin>:1(f1)
1 0.000 0.000 0.130 0.130 <string>:1(<module>)
1 0.000 0.000 0.000 0.000 {len}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}


>>> cProfile.run("f2('abc')")
100003 function calls in 0.380 CPU seconds

Ordered by: standard name

ncalls tottime percall cumtime percall filename:lineno(function)
1 0.210 0.210 0.380 0.380 <stdin>:1(f2)
1 0.000 0.000 0.380 0.380 <string>:1(<module>)
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
100000 0.170 0.000 0.170 0.000 {method 'startswith' of 'str' objects}

>>>



Офлайн

#9 Фев. 2, 2011 16:45:07

Kogrom
От:
Зарегистрирован: 2009-12-03
Сообщения: 160
Репутация: +  0  -
Профиль   Отправить e-mail  

получение элементов из списка по началу их названия

Мой второй вариант некорректный.



Офлайн

#10 Фев. 2, 2011 16:45:24

alexx11
От:
Зарегистрирован: 2010-05-13
Сообщения: 208
Репутация: +  0  -
Профиль   Отправить e-mail  

получение элементов из списка по началу их названия

truporez
ЛОЛ
Kogrom
У тебя третий вариант не верный.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version