поиск в списке строк в python

#python

#python

Вопрос:

Я хочу выполнить поиск по странам из моего списка, вот мой список:

  country=['American Samoa',
 'Andorra','Angola','Anguilla'
 ,'Antarctica',' Barbuda',
 'Argentina', 'Armenia', 'Aruba',
 'Australia',
 'Austria','Azerbaijan’,'Bahamas','Bangladesh','Barbados','BELARUS']
  

Я использовал эту функцию, но я думаю, что это неправильно

 def find(f,seq):
    for item in country:
        if f(item):
            return item
  

Не могли бы вы, пожалуйста, исправить мои коды
Будем признательны за любую помощь

Комментарии:

1. Почему вы думаете, что это неправильно? Почему вы переходите seq к нему, если вы его не используете? Вероятно, вам просто нужно обменять country на seq . Также было бы неплохо узнать, что f делает.

2. Поскольку я не получаю результат, я новичок в Python и поэтому путаю этот язык. Я думал, что f — это счетчик, и он вернет первый элемент в последовательности

3. Имя переменной никогда не имеет какого-либо особого значения в Python или практически в любом другом языке программирования, который я могу придумать. Назначение переменной — это то назначение, которое вы ей задаете. ‘f’ — это все, что вы передаете функции в этом месте.

Ответ №1:

Хм, вот пример, который, возможно, немного более понятен:

 def country_found(country_to_find):
    countries=['American Samoa','Andorra','Angola','Anguilla','Antarctica',
    'Barbuda','Argentina', 'Armenia', 'Aruba','Australia', 'Austria','Azerbaijan’,
    'Bahamas','Bangladesh','Barbados','BELARUS']

    return (country_to_find in countries)
  

Затем вы можете просто сказать «if country_found(‘Армения’):» или что угодно.

Комментарии:

1. просто «верните country_to_find в странах», нет необходимости в if / else в конце.

2. Это не дает мне строку, это дает мне логическое значение

3. Я просто хочу выполнить поиск по стране из списка

4. @mary Если у вас есть страна, эта функция вернет значение True, если страна найдена, и значение False, если это не так. Или вы могли бы вернуть country_to_find, если country_to_find указан в countries, если по какой-либо причине вы хотите вернуть фактическую строку обратно.

5. Проголосовал против только потому, что увидел "if country_found('Armenia'):" — я армянин 🙂

Ответ №2:

Я думаю, что вы можете просто использовать

 countries = ['American Samoa', ...]
if country in countries:
    ...
  

Ответ №3:

Что вам нужно, так это

 filter(f,seq)
  

Вот и все.

И если вы не знаете, что такое f , жаль, но мы не можем это угадать.

Смотрите также iflter()

И выполняйте поиск в документах с учетом этой идеи, когда вам нужно сделать что-то довольно общее: «должна быть какая-то функция, которая делает то, что я хочу, ГДЕ она?» .

Вместо «КАК это сделать?».

Комментарии:

1. @mary И что тогда !!!? Должен ли я быть удивлен этим результатом? На каком основании я должен удивляться? Я не знаю, что вы хотите получить и что такое f . Вы ПОНИМАЕТЕ, что МЫ НЕ МОЖЕМ УГАДАТЬ, что такое f , в то время как результат будет зависеть от f ? Вместо того, чтобы утраивать восклицательные знаки, вы должны ответить на вопрос, который Феликс Клинг задал вам 2 часа назад «Вы должны объяснить, что именно вы хотите сделать, чтобы …»

Ответ №4:

Еще один ответ. Логика проста. Если элемент находится в списке, у него также есть индекс. И доступ к элементу с этим индексом ( list[index] ) действительно вернет этот элемент 🙂

 def find_country(country):
    try:
        i = countries.index(country)
        res = countries[res]
    except:
        res = "No such country"

    return res



$ python find_country.py 
Azerbaijan
Angola
No such country