Как извлечь участника из набора единственного участника в Python?

+ для следующего брата. Есть ли эквивалент для предыдущего брата?

Вы можете использовать два селектора ax : ! и ?

Там 2 следующие селекторные функции для сиблинга в обычном CSS:

  • + является непосредственным последующим селектором сиблинга
  • ~ является любым последующим селектором сиблинга

. В обычном CSS нет предыдущего селектора sibling.

Однако в ax CSS послепроцессорной библиотеки есть 2 предыдущие селекторные функции:

  • ? - это предыдущий селектор немедленного (напротив +)
  • ! является любым предыдущим селектором (см. ~)

Рабочий пример:

В следующем примере:

  • .any-subsequent:hover ~ div выбирает любой последующий div
  • .immediate-subsequent:hover + div выбирает немедленный последующий div
  • .any-previous:hover ! div выбирает любой предыдущий div
  • .immediate-previous:hover ? div выбирает непосредственный предыдущий div

div {
  display: inline-block;
  width: 60px;
  height: 100px;
  color: rgb(255, 255, 255);
  background-color: rgb(255, 0, 0);
  text-align: center;
  vertical-align: top;
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.6s ease-out;
}

code {
  display: block;
  margin: 4px;
  font-size: 24px;
  line-height: 24px;
  background-color: rgba(0, 0, 0, 0.5);
}

div:nth-of-type(-n+4) {
  background-color: rgb(0, 0, 255);
}

div:nth-of-type(n+3):nth-of-type(-n+6) {
  opacity: 1;
}

.any-subsequent:hover ~ div,
.immediate-subsequent:hover + div,
.any-previous:hover ! div,
.immediate-previous:hover ? div {
  opacity: 1;
}
<h2>Hover over any of the blocks below</h2>

<div></div>
<div></div>

<div class="immediate-previous">Hover for <code>?</code> selector</div>
<div class="any-previous">Hover for <code>!</code> selector</div>
<div class="any-subsequent">Hover for <code>~</code> selector</div>
<div class="immediate-subsequent">Hover for <code>+</code> selector</div>

<div></div>
<div></div>

<script src="https://rouninmedia.github.io/axe/axe.js"></script>

58
задан recursive 24 October 2009 в 23:41
поделиться

4 ответа

Распаковка кортежей работает.

(element,) = myset

(Кстати, python-dev исследовал, но отклонил добавление myset.get () для возврата произвольного элемента из Обсуждение здесь , Гвидо ван Россум отвечает 1 и 2 .)

Мой личный фаворит для получения произвольного элемента - (когда у вас есть неизвестный номер, но также работает, если у вас есть только один):

element = next(iter(myset)) ¹

1 : в Python 2.5 и ранее вам нужно использовать iter (myset) .next ()

86
ответ дан 24 November 2019 в 18:49
поделиться

Существует также Расширенная Повторяемая Распаковка , который будет работать над одноэлементным набором, или mulit-элемент установил

element, *_ = myset

Хотя некоторая щетина при использовании одноразовой переменной.

0
ответ дан 24 November 2019 в 18:49
поделиться

вы можете использовать element = tuple (myset) [0] , что немного более эффективно, или вы можете сделать что-то вроде

element = iter(myset).next()

Я думаю, построив итератор более эффективно, чем создание кортежа / списка.

2
ответ дан 24 November 2019 в 18:49
поделиться

Рассмотрим Erlang:

  • Вам нужна песочница / DSL: вы можете написать «генераторы парсеров» для очистки доступ к критическим / уязвимым системным вызовам. Стандартный компилятор можно «легко» улучшить с помощью этой функциональности.

  • Вам необходимо детальное планирование: у вас есть некоторый контроль над этим, также при условии, что вы запускаете каждого «пользователя» в отдельных эмуляторах. Может, у тебя получится лучше, но мне придется копать больше. Помните, что планирование - O (1): -)

  • Вам необходимо разделение ресурсов между вашими «игроками» (я полагаю, если я правильно понял): Erlang не имеет общего состояния, так что это помогает с самого начала. Вы можете легко создать несколько супервизоров, которые будут следить за потреблением ресурсов игроками и т. Д. распаковка явно выигрывает над обоими:

    $ python2.6 -mtimeit -s'x=set([1])' 'a,=x'
    10000000 loops, best of 3: 0.174 usec per loop
    $ python2.6 -mtimeit -s'x=set([1])' 'a,=x'
    10000000 loops, best of 3: 0.174 usec per loop
    

    Это, конечно, для наборов из одного элемента (где последняя форма, как упоминалось другими, имеет то преимущество, что быстро дает сбой, если набор, который, как вы «знали», имел только один элемент, на самом деле имел несколько ). Для наборов с произвольным N> 1 элементов кортеж замедляется, iter - нет:

    $ python2.6 -mtimeit -s'x=set(range(99))' 'a=next(iter(x))'
    1000000 loops, best of 3: 0.417 usec per loop
    $ python2.6 -mtimeit -s'x=set(range(99))' 'a=tuple(x)[0]'
    100000 loops, best of 3: 3.12 usec per loop
    

    Итак, распаковка для одноэлементного случая и next (iter (x)) для общего случая, кажется лучшим.

21
ответ дан 24 November 2019 в 18:49
поделиться
Другие вопросы по тегам:

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