Как добавить элементы из списка в строку в python

#python

#python

Вопрос:

Вопрос заключается в следующем: » Создайте пароль, объединив 4 слова из 3 списков выше. Вывести пароль» В этом вопросе объединение означает объединение слов вместе. Мой код напечатан ниже, но мне любопытно, как его можно оптимизировать. Я уверен, что мне не нужно делать пароль списком. Не стесняйтесь включать любые другие оптимизации, которые я мог бы сделать. Спасибо!

 import itertools
import random

nouns =[A large list of strings]
verbs = [A large list of strings]
adjs = [A large list of strings]

# Make a four word password by combining words from the list of nouns, verbs and adjs

options = list(itertools.chain(nouns, verbs, adjs))
password = []

for _ in range (4):
    password.append(options[random.randint(0,len(options)-1)])
   
password = "".join(password)                  
print(password)

  

Ответ №1:

Кажется, в ваших спецификациях нет ничего, что различало бы части речи. Таким образом, у вас есть только один список слов для целей пароля.

 word_list = nouns   verbs   adjs
  

Теперь вам просто нужно взять четыре случайных элемента из списка. Вам следует random еще раз просмотреть документацию. sample и shuffle здесь полезны. Любой из них может захватить для вас 4 элемента.

 pass_words = random.sample(word_list, 4)
  

или

 random.shuffle(word_list)
pass_words = word_list[:4]
  

Наконец, просто объедините выбранные слова:

 password = ''.join(pass_words)
  

Ответ №2:

Вы можете использовать простое добавление для объединения списков:

 options = nouns   verbs   adjs
  

И вы можете использовать random.choice() для выбора случайных элементов из списка:

 for _ in range (4):
    password.append(random.choice(options))
  

Ответ №3:

Несколько однострочных строк.

Вариант -1 :

 print("".join(random.choice(nouns   verbs   adjs) for _ in range(4)))
  

Вариант -2 :

 print("".join(random.sample(nouns   verbs   adjs, 4)))
  

Вариант-3 (если вам нужна хотя бы одна запись из глагола, существительного и прилагательного) :

 print("".join(random.sample([random.choice(nouns),random.choice(verbs),random.choice(adjs),random.choice(nouns   verbs   adjs)], 4)))

  

Существует много таких однострочников с разницей в производительности.