Рандомно получить список из файла

474 просмотра
0
0 Комментариев

Есть txt файл такого содержания:(списки)

x = ['python', 'c++', 'JavaScript', 'c#', 'Pascal', 'bash', 'shell', 'AutoIt']
y = ['windows', 'ubuntu', 'mac', 'android', 'vista', 'xp', 'win2000']
z = ['fara', 'rama', 'goga', 'google', 'zaza', 'faza', 'dura', 'puma']

и т.д. (списков много)

Надо рандомно выбрать одну из переменных, из него тоже выбрать рандомно 4 слова, чтобы не повторялись между собой, и первое слово должно быть как в начале списка. При выборе переменной чтобы тоже не было повторений.

Как решить задачу?


Добавить комментарий

3 Answers

Python Опубликовано 18.12.2018
0

Easy

x = ['python', 'c++', 'JavaScript', 'c#', 'Pascal', 'bash', 'shell', 'AutoIt']
y = ['windows', 'ubuntu', 'mac', 'android', 'vista', 'xp', 'win2000']
z = ['fara', 'rama', 'goga', 'google', 'zaza', 'faza', 'dura', 'puma']
import random
a = random.choice(["x","y","z"])
value = []
if a == "x":
    a = random.sample(['python', 'c++', 'JavaScript', 'c#', 'Pascal', 'bash', 'shell', 'AutoIt'],4)
    value.append(x[0])
    value.append(a)
    print("Выбран массив x")
    print("Возвращаю массив", value)
elif a == "y":
    a = random.sample(['windows', 'ubuntu', 'mac', 'android', 'vista', 'xp', 'win2000'],4)
    value.append(y[0])
    value.append(a)
    print("Выбран массив y")
    print("Возвращаю массив", value)
elif a == "z":
    a = random.sample(['fara', 'rama', 'goga', 'google', 'zaza', 'faza', 'dura', 'puma'],4)
    value.append(z[0])
    value.append(a)
    print("Выбран массив z")
    print("Возвращаю массив", value)
a = input()

Если требуется брать списки из отдельного файла, думаю допишешь сам,а для того что бы не повторялись можно использовать множества, но тут из того что ты дал нет повторений.(Хотя код у меня очень уродливый,но если я правильно понял задание, работает(3.5), буду признателен если кто напишет красиво)

Добавить комментарий
0

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

import random as r
 
def get_random(lists, k):
    choice = r.choice(lists)
    if (k <= len(choice)):
        indexes = r.sample(range(0, len(choice)) , k)
    else:
        raise IndexError
    indexes.sort()
    for i in indexes:
        yield c[i]

Использовать так, например:

a = [i for i in get_random([x, y, z], 4)]

Добавить комментарий
0

import random
x =  ['python', 'c++', 'JavaScript', 'c#', 'Pascal', 'bash', 'shell', 'AutoIt']
y =  ['windows', 'ubuntu', 'mac', 'android', 'vista', 'xp', 'win2000']
z =  ['fara', 'rama', 'goga', 'google', 'zaza', 'faza', 'dura', 'puma']
all_data = [x, y, z]
for i in random.sample(all_data, 1):
    data = i[0]
    data1 = i[1:]
    q = random.sample(data1, 3)
    print(data + '\n' + '\n'.join(q))

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up