用字符连接列表元素

时间:2019-07-08 13:14:42

标签: python string list

假设我有以下列表:

f=[('soybean', 'vegetable_oil'), ('bay', 'smoke'), ('gelatin', 'watermelon')]

我希望加入每个元素,以便获得

['soybean:vegetable_oil', 'bay:smoke', 'gelatin:watermelon']

为此,请执行以下操作:

list=[]
for i in f:
    s=':'
    list=s.join(f)
    print(list)

但是会返回:

TypeError: sequence item 0: expected string, tuple found

我意识到还有一个类似的问题here,但是当我这样做

':'.join(str(d) for d in f)

我得到:

"('soybean', 'vegetable_oil'):('bay', 'smoke'):('gelatin', 'watermelon')"

这不是我想要的,我想知道我在做什么错吗?

5 个答案:

答案 0 :(得分:4)

如果使用Python 3.6+,请尝试使用具有列表理解功能的f字符串格式:

[f'{i}:{j}' for i, j in f]

输出

['soybean:vegetable_oil', 'bay:smoke', 'gelatin:watermelon']

答案 1 :(得分:2)

':'.join(str(d) for d in f)确实对列表元素进行了联接,而不对内部元组进行了联接。

使用以下列表理解:

[':'.join(x) for x in f]

示例

f = [('soybean', 'vegetable_oil'), ('bay', 'smoke'), ('gelatin', 'watermelon')]

print([':'.join(x) for x in f])
# ['soybean:vegetable_oil', 'bay:smoke', 'gelatin:watermelon']

答案 2 :(得分:2)

一种简单的方法是将maplist.join一起使用:

list(map(':'.join, f))
# ['soybean:vegetable_oil', 'bay:smoke', 'gelatin:watermelon']

答案 3 :(得分:1)

尝试使用此列表理解:

>>> f=[('soybean', 'vegetable_oil'), ('bay', 'smoke'), ('gelatin', 'watermelon')]
>>> [':'.join(k) for k in f]
['soybean:vegetable_oil', 'bay:smoke', 'gelatin:watermelon']

答案 4 :(得分:1)

在列表上使用for循环时,将遍历列表中的每个元素,在本例中为元组。这意味着您正在遍历列表,而不是内部元组。

说,您有此列表:[(0,0),(2,4),(-3,9)]

在列表上申请循环时,每次都会得到一个元组元素。

为了获得问题中提到的所需结果,可以使用以下代码:

for element in my_list:
    my_list.insert(my_list.index(element), ":".join(element))
        my_list.remove(element)

希望这对您有所帮助!