Разница между random.sample (sample, k) и itertools.combination (p, r) - PullRequest
1 голос
/ 14 февраля 2020

Здравствуйте, я новичок в python и только что начал писать базовые c python скрипты. Я решил написать программу генератора паролей. Я сталкивался с функциями random.sample() и itertools.combinations(). И я хотел бы знать разницу между . Я прочитал документацию и пришел к следующему выводу:
1. random.sample () вернет список уникальных комбинаций из совокупности, если в совокупности нет повторяющихся значений.
2. комбинаций () также вернет набор (p, r) возможных комбинаций, где r - длина. и была эта строка, "Элементы обрабатываются как уникальные в зависимости от их положения , а не по их значению. Поэтому, если входные элементы уникальны, повторных значений в каждой комбинации не будет. ", чего я не понял. Я предполагаю, что это говорит о том, что входные элементы должны быть уникальными, чтобы получить уникальные комбинации

Так что я пришел к окончательному выводу, что оба они одинаковы. Я хотел бы знать, прав я или нет (с объяснениями, пожалуйста). Спасибо.

1 Ответ

1 голос
/ 14 февраля 2020

Они не одинаковы, на самом деле они делают совершенно разные вещи. itertools.combinations() является генератором - он возвращает последовательность всех комбинаций из заданного набора значений. random.sample() обеспечивает одну (случайно выбранную) комбинацию. Запустите эти два фрагмента:

import random
print(random.sample([1,2,3], 2))

и

import itertools
for c in itertools.combinations([1,2,3],2):
    print(c)

и обратите внимание на разницу.

...