Как использовать строковый индекс для выделения первых букв в списке или кортеже из нескольких элементов

#python #string #list #tuples

Вопрос:

Как бы я создал функцию, по сути, для выделения только определенного символа для каждого элемента предоставляемой строковой логики, которую я ищу:

например, в списке таких элементов, как:

 countries_and_capitals = (
    ['Afghanistan', 'Kabul'], ['Albania', 'Tirana (Tirane)'], ['Algeria', 'Algiers'], ['Andorra', 'Andorra la Vella'],
    ['Angola', 'Luanda'], ['Antigua and Barbuda', "Saint John's"], ['Argentina', 'Buenos Aires'],
    ['Armenia', 'Yerevan'])
 

Как я мог создать логику, чтобы отображать только элементы, имеющие одинаковую первую букву как для Столицы, так и для Страны, например. Алжир, Алжир.

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

1. Если вы обнаружите, что какой-либо из этих постов помогает вам, можете ли вы проголосовать за него и подтвердить свое согласие/признательность?

Ответ №1:

Если только использовать First букву для определения соответствия, это, вероятно, тоже loose будет сделано, и в качестве результатов выберите еще несколько. Например: S из Кореи — S eoul; или от B elgium до B russels. Не уверен, что это желательно? даже это соответствует первоначальному требованию.

Поэтому, чтобы сделать эту функцию более адаптируемой — это просто делает matching критерии одним символом по умолчанию, но может быть изменен, чтобы выбрать больше символов, если это будет желательно позже.

 def find_same_name(lst, matching=1):
    '''
    find all matching capitals with Coutries, minimum matching is One char.
    '''

    # list comprehension

    return [sub  for sub in lst      
                 if sub[0][:matching] == sub[1][:matching]] # can determine matched req. 

  
 

Запускаю его:

 print(find_same_name(countries_and_capitals))
 

Выход:

 [['Algeria', 'Algiers'], ['Andorra', 'Andorra la Vella']]
 

Ответ №2:

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

 new_list = []

for sublist in countries_and_capitals:

    if sublist[0][0] == sublist[1][0]:

        new_list.append(sublist)
 

И вы получите:

 new_list

[['Algeria', 'Algiers'], ['Andorra', 'Andorra la Vella']]
 

Ответ №3:

Вы можете проиндексировать первый символ в строке, используя [] квадратные скобки

 string = "ABC"

print(string[0]) # Will print first character in the string