如何在python中从列表中收集新列表

2024-09-27 00:23:05 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一张清单

x = ["angela lopez", "kimmy kardahshian", "frank moses", "john peter"]

现在从这个列表中,我想从第一个单词中得到四个字母,第二个单词的三个字母颠倒过来。喜欢 安吉拉(前四名)-安吉
洛佩兹(倒转前三个)-波尔

现在,对于每一个,我组合生成的名称并将其列为一个列表。e、 g[“angepol”、“…”、“…”、“…”、“…”

我试着这样编码

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)

但是没有按我想的那样工作,所以我没有完成

我还试着把列表分开,然后一个接一个地做。但这也行不通


Tags: thein列表forstringisas字母
3条回答

请为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']
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']
>>> 

这可以使用映射功能轻松实现:

映射函数语法如下所示:

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']

是的,您可以使用lambda或列表理解在一行程序中完成这项工作,但这种方式做的是相同的,但仍然更具可读性

相关问题 更多 >

    热门问题