2012-01-07 3 views
1

Я уверен, что все опытные программисты Python знают простой и элегантный способ сделать это. К сожалению, на уровне моего новичка я этого не делаю.Извлечение и добавление элемента объекта Python

В любом случае, я сейчас пытаюсь изменить некоторые скрипты AI для игровой программы, написанной другими. Я ищу способ извлечь числовые элементы из существующего объекта, а затем добавить все эти элементы вместе.

Количество элементов в объекте будет меняться, но обычно будет не более десяти (10).

Элементы в объекте всегда будут «плавать».

Так, я в OBJ:

Как мне действовать, чтобы извлечь все элементы из существующего объекта, а затем добавить их вместе, чтобы вернуть новый номер «поплавок»?

+0

Большое спасибо всем, кто ответил на мой вопрос. Ответы все есть! –

+0

Не забудьте выбрать ответ, который вы считаете лучшим/наиболее полезным (нажмите на зеленую галочку). –

+0

Ваш вопрос немного неясен - можете ли вы его отредактировать и разместить пример объекта, который вы хотите суммировать? –

ответ

5

Вы можете использовать sum(iterable) сложить все элементы в виде кортежа или списка.

sum([1,2,3]) возвращение 6, например.

0

Я не уверен, если это то, что вы хотите:

total=0 
for i in obj: 
    total+=i 
+1

Работает, но не как pythonic как 'total = sum (obj)' – ThiefMaster

+0

просто показывает другие возможные варианты – thelost

0
sum = 0 
for attr, val in vars(obj).iteritems(): 
    sum += val 

Это должно итерацию хотя все объекты атрибутов и добавить их все к sum переменной.

+0

Хмм, что такое 'значение'? Я вижу только «val» ... –

+0

Моя плохая, простая опечатка, теперь изменила имя переменной. – siame

0

Встроенный sum(iterable) - это немедленный ответ - если вам нужно обобщение, попробуйте reduce(func, iterable) (Python 2.x) или functools.reduce(func, iterable) (Python 3). Например, чтобы получить произведение списка номеров, reduce(operator.mul, [1,2,3,4]), который возвращает 24.

Смежные вопросы