Как перемещать определенные элементы в списках и между ними

#python #python-3.x

#питон #python-3.x

Вопрос:

ребята. Сейчас я работаю над алгоритмом python для построения некоторых неравенств. Я хотел бы переместить переменные, начинающиеся с «x», влево, переместить все константы вправо и суммировать их.

 constraint_1 = str(boundNode[j])   "   "   str(boundNode[j-(2*(i 1))])   " <= "   str(boundNode[(j-(2*(i 1)) i)])   "   "   str(boundNode[(j-(2*(i 1)) i) 1])
            test = constraint_1.split(" <= ")
            part_left = list(test[0].partition("   "))
            part_right = list(test[1].partition("   ")) 
            print(part_left, part_right)
 

Это то, что я закодировал.

 ['x1', '   ', '0'] ['4', '   ', '6']
['x2', '   ', '4'] ['7', '   ', 'x1']
['x3', '   ', '6'] ['x1', '   ', '12']
['x4', '   ', '7'] ['9', '   ', 'x2']
['x5', '   ', 'x1'] ['x2', '   ', 'x3']
['x6', '   ', '12'] ['x3', '   ', '16']
['x7', '   ', '9'] ['11', '   ', 'x4']
['x8', '   ', 'x2'] ['x4', '   ', 'x5']
['x9', '   ', 'x3'] ['x5', '   ', 'x6']
['x10', '   ', '16'] ['x6', '   ', '19']
['x11', '   ', '11'] ['13', '   ', 'x7']
['x12', '   ', 'x4'] ['x7', '   ', 'x8']
['x13', '   ', 'x5'] ['x8', '   ', 'x9']
['x14', '   ', 'x6'] ['x9', '   ', 'x10']
['x15', '   ', '19'] ['x10', '   ', '22']
['20', '   ', '13'] ['14', '   ', 'x11']
['23', '   ', 'x7'] ['x11', '   ', 'x12']
['25', '   ', 'x8'] ['x12', '   ', 'x13']
['26', '   ', 'x9'] ['x13', '   ', 'x14']
['27', '   ', 'x10'] ['x14', '   ', 'x15']
['28', '   ', '22'] ['x15', '   ', '25']
 

Это то, что я получил в терминале.

Например, идеальный вывод 2-й строки будет -x1 x2 <= 3

Чего я с нетерпением жду здесь, так это подхода к поиску всего индекса элементов, содержащегося "x" в операторе цикла или условия.

Комментарии:

1. это не очень хорошая идея. Чего вы в конечном итоге пытаетесь достичь?

2. если вы пытаетесь анализировать / решать алгебраические системы, взгляните на sympy . Если вы хотите оценить неравенства, используйте функцию. Если вы сообщите нам, какова ваша цель, мы обязательно поможем

3. @anon01 Да, я не думаю, что это может сработать. Я пытаюсь сгенерировать неравенства, подобные -x1 x2 <= 3 тому, которое равно второй строке вывода в терминале, приведенном выше. Кстати. В каждой строке есть ` <=`.

4. Как правило, предполагается, что код должен делать вещи простыми и краткими. Если вам нужно «жестко закодировать» много строк для одного бита логики, вероятно, есть более простой способ сделать это.

Ответ №1:

Это не дает ответа на поставленный вопрос, как указано, но, вероятно, более полезно и слишком длинно для публикации в комментарии. Попробуйте это вместо этого:

 def my_ineq(x1, x2):

    if -x1   x2 <= 3:
        return True
    else:
        return False

my_ineq(2,4) # True
my_ineq(0,5) # False