2013-11-26 5 views
1

Когда я объявляю один символической переменной, она работает:Declarating несколько символических переменных в Python

>>> from sympy import var 
>>> x = var('x') 
>>> x + 2 
x + 2 

Теперь, для моей цели мне нужно несколько переменных, скажем, s0, s1, ..., s9 и мне нужны такие операции, как s0 + 1, s2 - s1 и т.д. .

Каким будет код? Это не будет работать для меня (EDIT: я имею в виду, я могу сделать это, да, но для этого мне нужно, чтобы изменить существующий код лота):

>>> from sympy import symbols 
>>> s = symbols('s0:9'); s 
(s0, s1, s2, s3, s4, s5, s6, s7, s8) 
>>> s[0] + 1 
s0 + 1 

EDIT2: s0, s1, s2, s3, s4, s5, s6, s7, s8, s9 = symbols('s0:10') это хорошо, но число переменных не фиксировано.

+2

Почему это не сработает для вас? Каковы ваши требования? – Alfe

+0

В принципе, я уже написал много строк, но не заметил этого факта. Теперь, если я попытаюсь использовать это, тогда мне нужно разбить код на две части, вывести результат из одной части, изменить его, а затем заменить на вторую часть! –

+1

Как насчет 'символов ('s0:% d'% n)'? – Alfe

ответ

0

Это работает просто отлично, не уверен, что проблема у вас возникли с этим:

>>> from sympy import symbols 
>>> s = symbols('s0:10') 
>>> s 
(s0, s1, s2, s3, s4, s5, s6, s7, s8, s9) 
>>> s[0] + 1 
s0 + 1 

Если вы хотите установить каждый переменной, вы можете использовать многоразовые назначение:

s0, s1, s2, s3, s4, s5, s6, s7, s8, s9 = symbols('s0:10') 

Это было бы эквивалентно:

s0, s1 = Symbol('s0'), Symbol('s1') # and s2:s9 as well 
+0

Это скорее вопрос, который нужен OP, а не ответ, вам не кажется? – Alfe

+0

@ F3AR3DLEGEND Эта строка 's0, s1, s2, s3, s4, s5, s6, s7, s8, s9 = символы ('s0: 10')' в порядке, но я не знаю числа переменных заранее, так что мне нужно что-то вроде 's'0: 9 '= symbols (' s0: 9 ') ', что дает 'SyntaxError' –

1

во-первых, вы должны использовать symbols в вместо var. var делает некоторую магию, чтобы вставлять символы в пространство имен, и их следует использовать только в интерактивном режиме.

Если вы хотите произвольное количество символов, вам нужна функция numbered_symbols, которая производит итератор. Here - это документация. Пример

>>> N = numbered_symbols('s') 
>>> for s, _ in zip(N, range(10)): 
...  print(s) 
s0 
s1 
s2 
s3 
s4 
s5 
s6 
s7 
s8 
s9 
Смежные вопросы