根据他们的帖子取两个列表并打印特定字符

时间:2015-08-06 10:42:30

标签: python python-2.7

我正在尝试找出如何获取两个列表(名字,姓氏)和打印一个列表中的前两个字符和另一个列表中的第一个字符,并在打印期间将它们连接起来。

实施例

firstname = ("John", "Jake")
lastname = ("Smith, "Jones")

我希望输出看起来像这样

Smj
Joj

因此,从姓氏中打印前2个字符,从firstname打印第1个字符,但是将它们连接在一起。

我首先尝试创建一个列表,然后从两个列表中创建,最后我尝试使用字典(两个列表到字典中)。

任何帮助将不胜感激

4 个答案:

答案 0 :(得分:3)

使用zip

firstname = ("John", "Jake") 
lastname = ("Smith", "Jones")
result = []
for firstname, lastname in zip(firstname, lastname):
    result.append('{}{}'.format(lastname[:2], firstname[0].lower()))
print result

答案 1 :(得分:1)

此:

firstnames = ("John", "Jake") 
lastnames = ("Smith", "Jones")

for f, l in zip(firstnames, lastnames):
    print l[:2] + f[:1].lower()

打印到控制台:

Smj
Joj

答案 2 :(得分:1)

您可以使用列表理解

>>> [ lastname[i][:2] + firstname[i][0].lower() for i in range(len(firstname))]
['Smj', 'Joj']

答案 3 :(得分:0)

您可以使用zip()将last_names和first_names压缩到一个数据结构,然后使用一行简单的函数式编程(map()& lambda):

first_names = ["John", "Jake"]
last_names = ["Smith", "Jones"]

map(lambda x: x[0][:2] + x[1][0].lower(), zip(last_names, first_names))

map()遍历数据结构并处理每个元素的函数。在我们的例子中,函数lambda x: x[0][:2] + x[1][0].lower()。 Lambda函数像普通函数一样工作,但它们是匿名的。参数x代表zip(last_names, first_names)中的单个元组。然后x[0][:2]从姓氏中提取前两个字符,x[1][0].lower()获取名字的第一个字符并将其转换为小写。

输出是预期结果的列表表示:

>> ['Smj', 'Joj']

此解决方案仅适用于Python 2.X,因为map返回一个列表。在Python 3.X中,您必须添加一个额外的列表()以将返回的地图对象转换为列表表示。然后结果会是一样的。