Могу ли я получить пояснение, что такое «структура данных, представляющая собой список списков»? - PullRequest
0 голосов
/ 18 июня 2020

"Создайте структуру данных, которая будет списком списков. Списки в структуре будут состоять из одного символа c алфавита, а затем заполнителей для того, сколько раз эта буква используется в качестве первой буквы в слове. , количество раз, использованное в качестве последней буквы в слове, и сумма этих двух значений. "

Учитывая эту инструкцию, я очень запутался в том, чего ожидать. Является ли заполнитель просто еще одним пустым списком? Так, например, код будет выглядеть так:

listOfLists = [[],[],[],[]]

list[0] будет алфавитом c символ list[1] будет количество раз, когда он будет использоваться как первая буква list[2] будет количество раз, которое она использовалась в качестве последней буквы list[3], будет суммой двух значений

Вот как я это себе представляю, но мне это кажется слишком сложным. Может кто-нибудь тупит для новичка? Спасибо.

Также можем мы просто увеличить число на line[1] += 1, если оно инициализировано нулями?

редактировать: моя формулировка была дерьмом благодаря профессору, но кто-то объяснил, что я имел в виду ниже спасибо

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Мне тоже сложно понять, о чем говорится в цитате, так что было бы неплохо немного больше контекста. Но, перечитав его несколько раз, я понял, что это означает следующее:

# A list of words to work with. It didn't explicitly say that this existed but it seemed to imply it.
words = ["apple", "banana", "quince", "vanilla"]
# Then build the multidimensional list:
list_of_lists = []
for letter in "abdcefghijklmnopqrstuvwxyz":
    firsts = len([1 for w in words if w[0] == letter])
 # this is equivalent to 
# l = []
# for w in words:
#     if w[0] == letter:
#        l.append(1)
# firsts = len(l)
# Although since the idea was to get it into one line, instead of appending to a list we would take the faster and cheaper rout of incrementing a counter like this:
# firsts = 0
# for w in words:
#     if w[0] == letter:
#        firsts += 1
    lasts = len([1 for w in words if w[-1] == letter])
    list_of_lists.append([letter, firsts, lasts, firsts + lasts])

# list_of_lists should now be something like this:
[['a', 1, 2, 3], ['b', 1, 0, 1] , ['c', 0, 0, 0]] # etc

Конечно, я могу ошибаться, но я так понимаю. Еще кое-что. Вместо того, чтобы делать w[0] == letter и w[-1] == letter, я думаю, вы могли бы сделать w.startswith(letter) и w.endswith(letter). Это не имеет большого значения для одной буквы, но, конечно, проще, если вы проверяете строки из нескольких букв. startswith() особенно полезно, например, для панелей поиска.

0 голосов
/ 18 июня 2020

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

list_of_lists = [['a', 0, 0, 0], ['b', 0, 0, 0], ...]

или

Список списков, содержащих букву и статистику о ней, например, количество раз оно появлялось как первая или последняя буква.

И вы можете увеличить значение, если оно уже установлено на 0.

Надеюсь, это поможет.

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