Python 如何向列表列表中的每个列表添加元素?

Python 如何向列表列表中的每个列表添加元素?,python,Python,我遇到了一个问题,我需要一个函数,它包含两个参数,一个字符和一个包含列表的列表。然后,函数应该将该元素添加到列表中的所有列表中。因此,如果我有参数“o”和[['tesc'],['fo'],[1],那么输出应该是[['tesc',o'],['fo',o'],[1',o'] 这是我的代码,我怀疑我没有做任何正确的事情,因为我根本没有得到任何输出 def distribute(e, l): new_list = [] for i in l: new_list.appen

我遇到了一个问题,我需要一个函数,它包含两个参数,一个字符和一个包含列表的列表。然后,函数应该将该元素添加到列表中的所有列表中。因此,如果我有参数
“o”
[['tesc'],['fo'],[1]
,那么输出应该是
[['tesc',o'],['fo',o'],[1',o']

这是我的代码,我怀疑我没有做任何正确的事情,因为我根本没有得到任何输出

def distribute(e, l):
    new_list = []
    for i in l:
        new_list.append(i)
    for e in new_list:
        new_list.append(e)
    print(new_list)
我做错了什么?

您可以尝试以下方法:

def add_item(l, a):
   return [i+[a] for i in l]

print(add_item([['tesc'], ['fo'], [1]], "o"))
输出:

[['tesc', 'o'], ['fo', 'o'], [1, 'o']]
您可以尝试以下方法:

def add_item(l, a):
   return [i+[a] for i in l]

print(add_item([['tesc'], ['fo'], [1]], "o"))
输出:

[['tesc', 'o'], ['fo', 'o'], [1, 'o']]

您在循环的
中使用了相同的变量名
'e'
,并将其作为
函数
参数
。此外,在第二个
循环中
,您希望
附加到
i
,因为这些是子列表-而不是
附加到
新列表

这就是为什么
函数
永远不会完成的原因,因为您在
新列表
中的每个元素中循环
,但添加到
新列表
时,它永远不会结束

最后,在编写
函数时,我将
打印
更改为
返回

def distribute(e, l):
    new_list = []
    for i in l:
        new_list.append(i)
    for i in new_list:
        i.append(e)
    return new_list
这将起作用,但是它不是很像
pythonic
。循环
的第一个
就是创建一个输入列表的副本
('l')
,这是必需的(在某些应用程序中),因为没有它,输入
列表
将被修改为
列表
是不可变的

但是,只需使用
切片复制
列表
,就可以完全摆脱这个
循环
。这将使您的功能更加简洁:

def distribute(e, l):
    new_list = l[:]
    for i in new_list:
        i.append(e)
    return new_list
当然,如果您不关心解析到
函数中的
列表
是否被修改,您就不必麻烦复制它了:

def distribute(e, l):
    for i in l:
        i.append(e)
    return l

您在循环的
中使用了相同的变量名
'e'
,并将其作为
函数
参数
。此外,在第二个
循环中
,您希望
附加到
i
,因为这些是子列表-而不是
附加到
新列表

这就是为什么
函数
永远不会完成的原因,因为您在
新列表
中的每个元素中循环
,但添加到
新列表
时,它永远不会结束

最后,在编写
函数时,我将
打印
更改为
返回

def distribute(e, l):
    new_list = []
    for i in l:
        new_list.append(i)
    for i in new_list:
        i.append(e)
    return new_list
这将起作用,但是它不是很像
pythonic
。循环
的第一个
就是创建一个输入列表的副本
('l')
,这是必需的(在某些应用程序中),因为没有它,输入
列表
将被修改为
列表
是不可变的

但是,只需使用
切片复制
列表
,就可以完全摆脱这个
循环
。这将使您的功能更加简洁:

def distribute(e, l):
    new_list = l[:]
    for i in new_list:
        i.append(e)
    return new_list
当然,如果您不关心解析到
函数中的
列表
是否被修改,您就不必麻烦复制它了:

def distribute(e, l):
    for i in l:
        i.append(e)
    return l

你把事情弄得太复杂了:

def distribute(e, l):
    for sublist in l:
        sublist.append(e)

    print(l)

distribute("o", [['tesc'], ['fo'], [1]])  
输出:

[['tesc', 'o'], ['fo', 'o'], [1, 'o']]
[['tesc',o'],['fo',o'],[1',o']]

你把事情弄得太复杂了:

def distribute(e, l):
    for sublist in l:
        sublist.append(e)

    print(l)

distribute("o", [['tesc'], ['fo'], [1]])  
输出:

[['tesc', 'o'], ['fo', 'o'], [1, 'o']]
[['tesc',o'],['fo',o'],[1',o']]