Допустим, у меня есть список
x = ["angela lopez", "kimmy kardahshian", "frank moses", "john peter"]
Теперь из этого списка я хочу получить четыре буквы из первых слов и 3 буквы в обратном порядке из второго слова. Нравиться
анжела(первые четыре) - андж
lopez (перевернутые первые три) - pol
теперь для каждого из них я комбинирую сгенерированное имя и делаю его списком. например ["ангепол", "....","....","...."]..
Я пытался закодировать это так
y = []
y = [string[:3] for string in x]
print ("The created list is confirmed as: ", y)
z= []
z = [string[7:9] for string in x]
print ("The created list is confirmed as: ", z)
Но не получилось так, как я хотел, поэтому я не закончил его.
Я также попытался разделить список, а затем сделать это один за другим. Но это тоже не сработает.
Что-то в связи с: [f"{first[:4]}{last[2::-1]}" for first, last in (s.split() for s in x)]
Или: [a[:4] + b[2::-1] for a, b in map(str.split, x)]
.
names = ["angela lopez", "kimmy kardahshian", "frank moses", "john peter"]
print([parts[0][:3] + parts[1][:3][::-1] for parts in map(str.split, names)])
Выход:
['angpol', 'kimrak', 'frasom', 'johtep']
>>>
Попробуйте это для z:
z=[i.split()[1][:3][::-1] for i in x]
и учитывая ваш y как:
y = [string[:4] for string in x]
вы можете получить результат следующим образом:
res=[y[i]+z[i] for i in range(len(y))]
>>> print(res)
['angepol', 'kimmrak', 'fransom', 'johntep']
Действительно полезно. Спасибо. Но как насчет того, если я хочу, чтобы z выполнял функцию y.
Подобно тому, как lopez должен отображать has lop , захватывая первые три буквы, не меняя их местами.
Если вы не хотите обратного, просто попробуйте это: z=[i.split()[1][:3] for i in x]
Не волнуйся, у меня это тоже есть. Спасибо
Этого легко добиться с помощью функции карты:
Синтаксис функции карты следующий:
map (function, iterable)
поэтому вы можете создать функцию для форматирования ваших данных следующим образом:
names = ["angela lopez", "kimmy kardahshian", "frank moses", "john peter"]
def formatText(string):
return (string[:4] + string.split(" ")[1][2::-1])
names = list(map(formatText, names))
Этот код выводит:
['angpol', 'kimrak', 'frasom', 'johtep']
да, вы можете сделать это в один лайнер, используя лямбда или понимание списка, но этот способ делает то же самое, но остается более читаемым.
Но не сработало, как я хотел --> Пожалуйста отредактируйте свой вопрос и добавьте фактический результат, который вы получаете.