как вы можете извлечь значения из списка python, которые соответствуют фразе, используя индексацию, для помещения в другой массив?

#python #arrays #list #loops #indexing

#python #массивы #Список #циклы #индексирование

Вопрос:

В настоящее время я работаю над оптимизацией, которая работает для любого размера n, где сетевой транспорт — это имена с соглашением ‘x_i_j’, где i — отправляющий узел, а j — принимающий узел.

У меня есть список с именем x, который содержит все соответствующие имена узлов.

использование

 x =['x_%d_%d'%(i,j) for i in range(dims 2) for j in range(dims 2) if (i,j) in costs]
 

n — это количество интересующих меня точек, а dims = n * 2

Я пишу ограничение, которое будет представлять собой массив размером n на 2, где первая строка содержит значения ‘x_i_j’, которые мне нужно отфильтровать из списка по заданному критерию.

мой код для моего начального массива работает нормально

 start_constraint = [[x[i] for i in range(numvars)  if 'x_%d' %(dims) in x[i] ], [1 for i in range(numvars)  if 'x_%d' %(dims) in x[i]]]

output:
[['x_6_0', 'x_6_1', 'x_6_2'], [1, 1, 1]]
 

для моего конечного массива
Я пытаюсь извлечь объекты, которые являются ‘x_i_7’

В настоящее время я пытаюсь сделать это таким образом.

 end_constraint = [[x[i] for i in range(numvars)  if 'x_%d_%d' %(i,dims 1) in x[i] ], [1 for i in range(numvars)  if 'x_%d_%d' %(i,dims 1) in x[i]]]

output: 
[[], []]
 

если я введу значения для %(i, dims 1), такие как % (4,7), код вставит это одно значение.

Как я могу заставить это работать, используя индексацию и цикл?

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

1. Есть ли у вас образец ввода и ожидаемый результат для совместного использования?

2. x = ['x_0_3', 'x_1_4', 'x_2_5', 'x_3_1', 'x_3_2', 'x_3_7', 'x_4_0', 'x_4_2', 'x_4_7', 'x_5_0', 'x_5_1', 'x_5_7', 'x_6_0', 'x_6_1', 'x_6_2'] и для вывода end_constraint требуется end_constraint = [['x_3_7', 'x_4_7', 'x_5_7'],[1,1,1]] также n = 3 и dims = 6 для этого сценария и numbers = 15