заполнить список / список списков без повторяющихся данных из файла - PullRequest
0 голосов
/ 19 октября 2018

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

  def open_cards(number_of_cards):
    cards = []
    txtfile="mytextfile.txt"
    file = open(txtfile).read().splitlines()
    for x in range (0, int(number_of_cards) * 2):
        listy = []
        xmen_name = random.choice(file)
        power = random.randint(0, 100)
        intelligence = random.randint(0, 50)
        weakness = random.randint(0, 10)
        spirit = random.randint(0, 10)
        listy.insert(0, xmen_name)
        listy.insert(1, power)
        listy.insert(2, intelligence)
        listy.insert(3, weakness)
        listy.insert(4, spirit)
        cards.append(listy)
    print("this is the card list prior to shuffle")
    print(cards)

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

Я бы использовал random.shuffle

Сначала перетасовывают имена, затем повторяют

(я не понимаю, почему вы создаете number_of_cards * 2 карты, а не просто number_of_cards)

def open_cards(number_of_cards):
    cards = []
    txtfile="mytextfile.txt"
    with open(txtfile) as f:
        names = list(f)
    random.shuffle(names)
    for i in range(number_of_cards * 2):
        listy = []
        xmen_name = names[i]
        power = random.randint(0, 100)
        intelligence = random.randint(0, 50)
        weakness = random.randint(0, 10)
        spirit = random.randint(0, 10)
        listy.append(xmen_name)
        listy.append(power)
        listy.append(intelligence)
        listy.append(weakness)
        listy.append(spirit)
        cards.append(listy)
    print("this is the card list prior to shuffle")
    print(cards)
0 голосов
/ 19 октября 2018

Вы можете использовать set для удаления дублирующихся значений в list

Listy = [power, intelligence, weakness, spirit, weakness, power]
unique_listy = set(Listy)
print(unique_listy)

Вывод

{power, intelligence, weakness, spirit}
0 голосов
/ 19 октября 2018

Если ввод не должен повторяться, это звучит как работа для dict.Итак:

cards = {}
for x in range (0, int(number_of_cards) * 2):
    # code
    cards[xmen_name] = (power, intelligence, weakness, spirit)

Я бы сказал, используйте кортеж, я не думаю, что статистика XMen должна быть изменена:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...