我试图采取一个字符串,并将其附加到每个字符串包含在一个列表,然后有一个新的列表与完成的字符串。例子:
list1 = ['foo', 'fob', 'faz', 'funk']
string = 'bar'
*magic*
list2 = ['foobar', 'fobbar', 'fazbar', 'funkbar']
我尝试了for循环,并尝试了列表理解,但它是垃圾。一如既往,任何帮助,非常感谢。
我试图采取一个字符串,并将其附加到每个字符串包含在一个列表,然后有一个新的列表与完成的字符串。例子:
list1 = ['foo', 'fob', 'faz', 'funk']
string = 'bar'
*magic*
list2 = ['foobar', 'fobbar', 'fazbar', 'funkbar']
我尝试了for循环,并尝试了列表理解,但它是垃圾。一如既往,任何帮助,非常感谢。
当前回答
在我看来,地图是最适合做这项工作的工具。
my_list = ['foo', 'fob', 'faz', 'funk']
string = 'bar'
list2 = list(map(lambda orig_string: orig_string + string, my_list))
有关map的更多示例,请参阅函数式编程工具一节。
其他回答
最简单的方法是使用列表推导式:
[s + mystring for s in mylist]
注意,我避免使用像list这样的内置名称,因为这会掩盖或隐藏内置名称,这非常不好。
此外,如果你实际上不需要一个列表,而只是需要一个迭代器,生成器表达式可能会更有效(尽管这对短列表来说可能无关紧要):
(s + mystring for s in mylist)
这些功能非常强大、灵活且简洁。每个优秀的python程序员都应该学会使用它们。
list2 = ['%sbar' % (x,) for x in list]
不要用list作为名字;它隐藏内置类型。
扩展位到“追加一个字符串列表到一个字符串列表”:
import numpy as np
lst1 = ['a','b','c','d','e']
lst2 = ['1','2','3','4','5']
at = np.full(fill_value='@',shape=len(lst1),dtype=object) #optional third list
result = np.array(lst1,dtype=object)+at+np.array(lst2,dtype=object)
结果:
array(['a@1', 'b@2', 'c@3', 'd@4', 'e@5'], dtype=object)
Dtype odject可以进一步转换为STR
new_list = [word_in_list + end_string for word_in_list in old_list]
使用诸如“list”这样的名称作为变量名是不好的,因为它将覆盖/覆盖内置。
my_list = ['foo', 'fob', 'faz', 'funk']
string = 'bar'
my_new_list = [x + string for x in my_list]
print my_new_list
这将打印:
['foobar', 'fobbar', 'fazbar', 'funkbar']