Python - Добавить слова из списка строк, которые начинаются с определенного символа - PullRequest
0 голосов
/ 17 января 2012

Хорошо, застрял на другом вопросе Python. Я пробовал это несколько раз, но, похоже, не могу понять.

Вопрос: Реализовать функцию startString (char, stringlist), которая возвращает список всех строк в списке, начинающихся с символа char.

startString('s',["simple", "to", "do", "some","things"])

Это то, что я пробовал до сих пор, и я знаю, что это не работает:

def startString(char, stringlist):
    newlist = []
    for i in stringlist:
        if stringlist[0] == char:
            newlist.append(stringlist)
    print newlist

Спасибо за любую помощь.

Ответы [ 7 ]

3 голосов
/ 17 января 2012

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

  1. Вы можете создавать новые списки в Python с помощью понимания списков.

    newList = [item for item in oldList]

  2. Вы можете индексировать в строки так же, как вы делаете списки. Это эквивалентно методу .startswith() из строки.

    firstChar = inputString[0]

  3. Вы можете использовать условия в списках, чтобы контролировать, какие элементы отображаются в новом списке.

    newList = [item for item in oldList if <logic test>]

  4. В зависимости от того, как вас оценивают, запомните return новый список, а не print его. Если оценка выполняется любым автоматизированным способом, разница будет заметна.

Рассматривая приведенный ниже пример кода, похоже, что ваша трудность, вероятно, в этой строке:

if stringlist[0] == char:

Здесь вы извлекаете первое значение из переданного списка, а не первый символ строки, которую вы пытаетесь проверить. Этого было бы достаточно, чтобы доставить вам неприятности. Кроме того, вы, вероятно, не хотите эту строку:

newlist.append(stringlist)

Это поместит весь список ввода в ваш список вывода. Вы, вероятно, хотите:

newlist.append(i)

Многие из этих деталей можно найти и в других ответах / предложениях.

1 голос
/ 17 января 2012

Вы должны посмотреть на Понимание списка Python .Эта «функция» обычно записывается в одну строку с python.Вы также хотите посмотреть на метод .startswith строк

1 голос
/ 17 января 2012

попробуйте это:

def startString(char, stringlist):
    newlist = []
    for string in stringlist:
        if string.startswith(char):
            newlist.append(string)
    print newlist
0 голосов
/ 17 января 2012

Вы перебираете список строк, но затем вы проверяете, равен ли первый элемент вашего списка строк char. Вы должны изменить stringlist на i в своем for -цикле. (хотя это может быть лучше, используя filter().

0 голосов
/ 17 января 2012
for i in stringlist:
   if stringlist[0] == char:

Вторая строка говорит, что вместо того, чтобы смотреть на первую букву одной из строк, вы просто смотрите на первое слово в списке.

0 голосов
/ 17 января 2012

используйте mystring.startswith(). Проверка документов

Затем используйте, например, понимание списка, используя startwith, чтобы отфильтровать элементы списка

0 голосов
/ 17 января 2012

for i in stringlist перебирает ваш список с каждым элементом, представленным как переменная i.Посмотрите, что вы тестируете в цикле, и посмотрите, действительно ли это то, что вы хотите проверить.Что такое stringlist[0] на самом деле?

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