Эта функция делает свое дело:
def giveme(s, words=()):
lista = s.split()
return [lista[item-1] for item in words]
mystring = "You have 15 new messages and the size is 32000"
position = (3, 10)
print giveme(mystring, position)
it prints -> ['15', '32000']
Альтернатива, указанная Игнасио, очень чистая:
import operator
mystring = "You have 15 new messages and the size is 32000"
position = (2, 9)
lista = mystring.split()
f = operator.itemgetter(*position)
print f(lista)
it prints -> ['15', '32000']
operator.itemgetter()
...
Возвращает вызываемый объект, который извлекает данный элемент(ы) из своего операнда.
После f = itemgetter(2)
вызов f(r)
возвращает r[2].
После g = itemgetter(2,5,3)
вызов g(r)
возвращает (r[2], r[5], r[3])
Обратите внимание, что теперь позиции в position должны отсчитываться от 0, чтобы можно было напрямую использовать аргумент *position.
person
joaquin
schedule
15.05.2010