将列表转换为元组,然后在python中将此元组添加到列表中

将列表转换为元组,然后在python中将此元组添加到列表中,python,python-3.x,Python,Python 3.x,嗨,我希望我的输出是 add_sizes(['hello', 'world']) -> [('hello', 5), ('world', 5)] 但是我越来越 add_sizes(['hello', 'world']) -> [('hello', 5), ('hello', 5, 'helloworld', 5)] 我的代码是 def add_sizes(strings): s = () t=[] m=[] for i in strings:

嗨,我希望我的输出是

add_sizes(['hello', 'world']) -> [('hello', 5), ('world', 5)]
但是我越来越

add_sizes(['hello', 'world']) -> [('hello', 5), ('hello', 5, 'helloworld', 5)]
我的代码是

def add_sizes(strings):

    s = ()
    t=[]
    m=[]
    for i in strings:
        x=i
        for i,c in enumerate(list(x)):
            t.append(c)
        l=(str(''.join(t)),i+1)
        s += l
        m.append(s)
    print(m)

如果您有任何建议,我们将不胜感激。请使用列表理解:

>>> def add_sizes(strings):
...     return [(s, len(s)) for s in strings]
... 
>>> 
>>> add_sizes(['hello', 'world'])
[('hello', 5), ('world', 5)]
或者,如果您想在适当的位置执行此操作:

>>> def add_size(strings):
...     for i, s in enumerate(strings):
...         strings[i] = (s, len(s))
...     return strings
... 
>>> add_sizes(['hello', 'world'])
[('hello', 5), ('world', 5)]

有人已经给出了完整的解决方案,所以我也将发布我的:

def add_sizes(strings):
    l = []
    for string in strings:
        l.append((string, len(string)))
    return l

def add_sizes(strings):
    return [(s, len(s)) for s in strings]

我觉得你把事情复杂化了一点。您只需要包含
strings
中每个字符串的元组以及字符串的
len()
。将这些内容逐个添加到列表中,完成后返回/打印列表。您的
enumerate
l=(str('''.join(t)),i+1)
语句不是必需的问题的原因是您的
s=();t=[]
(应该在循环中),但正如eugene y所说,更好的解决方案是列表理解。谢谢,它工作起来很有魅力,我不知道我们可以这样做。非常感谢!