我正在尝试找出如何获取两个列表(名字,姓氏)和打印一个列表中的前两个字符和另一个列表中的第一个字符,并在打印期间将它们连接起来。
实施例
firstname = ("John", "Jake")
lastname = ("Smith, "Jones")
我希望输出看起来像这样
Smj
Joj
因此,从姓氏中打印前2个字符,从firstname打印第1个字符,但是将它们连接在一起。
我首先尝试创建一个列表,然后从两个列表中创建,最后我尝试使用字典(两个列表到字典中)。
任何帮助将不胜感激
答案 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中,您必须添加一个额外的列表()以将返回的地图对象转换为列表表示。然后结果会是一样的。