Наивный подход может заключаться в том, чтобы взять набор перестановок:
list(set(it.permutations([1, 1, 1])))
# [(1, 1, 1)]
Однако этот метод расточительно вычисляет репликативные перестановки и отбрасывает их. Более эффективным подходом будет more_itertools.distinct_permutations
, сторонний инструмент .
Код
import itertools as it
import more_itertools as mit
list(mit.distinct_permutations([1, 1, 1]))
# [(1, 1, 1)]
Производительность
Используя большую итерацию, мы сравним характеристики между наивными и сторонними методами.
iterable = [1, 1, 1, 1, 1, 1]
len(list(it.permutations(iterable)))
# 720
%timeit -n 10000 list(set(it.permutations(iterable)))
# 10000 loops, best of 3: 111 µs per loop
%timeit -n 10000 list(mit.distinct_permutations(iterable))
# 10000 loops, best of 3: 16.7 µs per loop
Мы видим, что more_itertools.distinct_permutations
на порядок быстрее.
Подробности
Из исходного кода алгоритм рекурсии (как показано в принятом ответе) используется для вычисления различных перестановок, тем самым устраняя расточительные вычисления. Подробнее см. Исходный код .
width
и height
используются при переходе на маршрут css.
<!DOCTYPE html>
<html>
<head>
<title>Setting Width and Height on Textareas</title>
<style>
.comments { width: 300px; height: 75px }
</style>
</head>
<body>
<textarea class="comments"></textarea>
</body>
</html>
Не думаю, что это возможно. Я всегда иду с высотой и шириной.
textarea{
width:400px;
height:100px;
}
хорошая вещь о том, как это сделать, - это то, что вы можете полностью ее подстроить. Теперь вы можете добавить такие вещи, как:
textarea{
width:400px;
height:100px;
border:1px solid #000000;
background-color:#CCCCCC;
}
<textarea rows="4" cols="50"></textarea>
Это эквивалентно:
textarea {
height: 4em;
width: 50em;
}
, где 1em эквивалентно текущему размеру шрифта, таким образом, область текста составляет 50 символов. см. здесь .
padding
и line-height
в учетной записи. Скажем, у вас есть отступы наполовину em вверху и внизу, а высота линии - 1,2 метра, тогда высота для 4 строк будет 1 + 4 * 1.2 = 5.8em.
– nalply
18 February 2014 в 15:16
height: calc(3em + 8px);
.
– GBU
10 May 2017 в 13:47
Насколько я знаю, вы не можете.
Кроме того, это не то, что css в любом случае. Css для стилизации и HTML для разметки.
EDIT: Cool, я стоял исправлен.
line-height
, padding
на контейнере (не вычисляя высоту, основанную на box-sizing
), даже принимая во внимание различные пропорции шрифтов используется для обеспечения того, чтобы текстовое поле отображало заданное количество строк текста, чего вы не можете достичь, используя высоту css.
– William Isted
10 November 2016 в 10:58