Python: Рассматривает список, состоящий из нескольких вхождений только двух возможных значений. Как мне «сдвинуть / сжать» все одно значение влево - PullRequest
0 голосов
/ 25 января 2020

Я уже некоторое время изучаю различные способы манипулирования списками, и я столкнулся с проблемой, которую мое неопытное я не может решить.

Рассмотрим список a = [1,0,1,0,1,1,0].

Я хочу набрать sh все вхождения 1 влево, составляя список a = [1,1,1,1,0,0,0].

Есть ли какая-нибудь функция, которую я мог бы вызвать, о которой я не знаю, или я должен сделать это вручную? Я хочу перебирать список один за другим, но чувствую, что он не будет эффективным.

Ответы [ 2 ]

1 голос
/ 25 января 2020

Как насчет этого?

a.sort(key=lambda x:x!=1)

Измените 1 на любое другое значение, которое вы хотите переместить.

0 голосов
/ 25 января 2020

Поскольку сортировка является хорошим решением в этом случае, она вообще не работает. Если ваш список содержит больше элементов, чем просто 0 и 1, вы хотели бы объединить все найденные 1 с новым списком, который формируется после устранения этих 1, например:

result = [1]*a.count(1)+list(filter(lambda x: x!=1, a))

Выход для a = [1,2,3,5,2,1,1,4] равен [1, 1, 1, 2, 3, 5, 2, 4] затем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...