#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