Удалить элемент из списка и распечатать новый список в том же заявлении

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

В общем, вы должны быть осторожны с параллельным кодом и EF. Однако то, что вы делаете, должно работать. Один вопрос в моем уме; Выполняется ли какая-либо работа над другим экземпляром этого контекста перед параллелью? Согласно вашему сообщению, вы делаете отдельный контекст в каждом потоке. Это хорошо. Однако часть меня удивляется, если между несколькими контекстами происходит интересное соперничество конструктора. Если вы не используете этот контекст где-либо перед этим параллельным вызовом, я бы предложил попытаться запустить даже простой запрос против контекста, чтобы открыть его и убедиться, что все биты EF запущены перед запуском параллельного метода. Я признаю, что я не пробовал точно , что вы здесь делали, но я сделал близко, и это сработало.

0
задан Poete Maudit 17 January 2019 в 12:15
поделиться

3 ответа

Вы можете создать функцию-обертку для удаления списка и вызывать эту функцию вместо прямого вызова list.remove.

def list_remove(l, elem):
    l.remove(elem)
    return l

print (list_remove(l, elem))

Отказ от ответственности: Я действительно не рекомендую вам делать это. Но это всего лишь метод, который мне пришёл в голову.

Я действительно не вижу проблемы в написании list.remove() и print в отдельных выражениях.

0
ответ дан Jay 17 January 2019 в 12:15
поделиться

Если вы действительно хотите одно утверждение без изменения рассматриваемого списка, вы можете попробовать my_list[:my_list.index(value)]+my_list[my_list.index(value)+1:]. Это имеет недостатки

  • , которые вы вычисляете my_list.index(value) дважды (не обязательно 3.8+, см. PEP572 )
  • , которые вы нарезаете и добавляете, что очень больше, чем просто удаление
  • , на самом деле (рядом) это не так ясно, как my_list.remove(val)

И,


Отказ от ответственности : я действительно не рекомендую вам делать это. Но это всего лишь метод, который мне пришёл в голову.

Я действительно не вижу проблемы в написании list.remove () и печати в отдельных выражениях.

- Джей

0
ответ дан user24343 17 January 2019 в 12:15
поделиться

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

print( (lambda x,y:x if x.remove(y) is None else None) ([1, 2, 3], 2) )

Вам нужна копия Отказ от ответственности из двух других ответов ? Короче говоря, это не очень читаемый кусок кода.

0
ответ дан tevemadar 17 January 2019 в 12:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: