Как выполнить метод для строки в списке в списке в Python - PullRequest
0 голосов
/ 10 марта 2020

Буду признателен за помощь. У меня есть список списков. Список, содержащий все списки, называется all_lists. В списках all_lists есть строки. Я хочу применить метод к тексту каждой строки в каждом списке.

list_in_list = all_lists[0] #prints first list
string_in_list = list_in_list[0] #prints string in first list

Я хочу создать для l oop, который позволит мне изменить все строки с помощью метода, и поставить они возвращаются в списки и помещают все списки обратно в списки all_lists. Вот что у меня сейчас:

new_list = []
for i in range(len(all_lists)): # all lists
    list_in_list = all_lists[i] # separate lists from all_lists
    for j in range(len(list_in_list)): # every list in all_list
        string_in_list = line[j] # separate string from list
        new_string = decontracted(string_in_list) # apply the method on string
        new_list.append(new_string) # put new string back in a list

Я не уверен, как вернуть каждый список обратно в список, содержащий все списки. Может ли кто-нибудь помочь мне сделать это?

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

от:

[['list one'],['list two'],['list...'],['list n']]

до:

[['LIST ONE'],['LIST TWO'],['LIST...'],['LIST N']]

Ответы [ 3 ]

1 голос
/ 10 марта 2020

Вы можете применить функцию к каждому элементу списка, используя map:

list(map(lambda x: [x[0].upper()], lst))

Код :

lst = [['list one'],['list two'],['list...'],['list n']]

print(list(map(lambda x: [x[0].upper()], lst)))
# [['LIST ONE'], ['LIST TWO'], ['LIST...'], ['LIST N']]

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

list(map(decontracted, lst))
0 голосов
/ 10 марта 2020

Вы можете использовать for loops или list comprehension для достижения результата в вашем примере.

all_lists = [['list one'],['list two'],['list...'],['list n']]

В качестве функции мы можем выполнить upper для каждого элемента в списке, используя for loop.

def upper_list(data):
    result = []
    for nested in data:
        changes = []
        for element in nested:
            changes.append(element.upper())
        result.append(changes)
    return result

upper_list(all_lists)
#[['LIST ONE'], ['LIST TWO'], ['LIST...'], ['LIST N']]

Более того, вы можете использовать списки, чтобы сжимать вышеприведенное в одну строку кода.

all_lists = [[element.upper() for element in nested] for nested in all_lists]

Оба они будут работать над вложенными списками, включающими несколько элементов такие как;

all_lists = [['list one', 'test'],['list two','two'],['list...'],['list n']]

>>>[[element.upper() for element in nested] for nested in all_lists]
#[['LIST ONE', 'TEST'], ['LIST TWO', 'TWO'], ['LIST...'], ['LIST N']]
0 голосов
/ 10 марта 2020

Функциональный подход с использованием карты и фильтра будет полезным способом. См. Аналогичный вопрос ниже: Применение функции к каждому элементу списка

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