我有一个列表,我想从中删除一个列表,以便我可以得到所需的答案。
list = [["hello","son", 52],["welcome","home",65],["good","work",6]]
name = input("Name: ")
if name in list:
del list[name]
print("name + " deleted")
else:
print("invalid name")
如何删除列表以便我得到这个答案:
list = [["hello", "son", 52], ["good", "work", 6]]
然后添加一个新列表以获得此结果:
list = [["hello", "son", 52], ["good", "work", 6],["see","you","soon"]]
答案 0 :(得分:0)
您需要遍历列表,因为用于评估条件的键位于子列表中。
mylist = [["hello","son", 52],["welcome","home",65],["good","work",6]]
name = 'hello' # 'son' would also work
for i, sub_list in enumerate(mylist):
if name in sub_list:
del mylist[i]
print(name + " deleted")
break
print(mylist)
对于给定的示例,您要为名称指定一堆属性;我会考虑使用字典作为键。
答案 1 :(得分:0)
我的建议是使用嵌套的while循环遍历列表列表!检查您要求的“名称”是否出现在列表的索引处,如果是,请使用“[x [y]”位置弹出或删除它(取决于您要对旧的名称执行操作) /新名单。根据你的措辞,我有点不清楚。
希望有所帮助!
答案 2 :(得分:0)
将索引替换为要在搜索中使用的元素。 (我假设指数= 1)
>>> list = [["hello","son", 52],["welcome","home",65],["good","work",6]]
>>> name="home"
>>> list
[['hello', 'son', 52], ['welcome', 'home', 65], ['good', 'work', 6]]
>>> list = [rec for rec in list if rec[1] != name]
>>> list
[['hello', 'son', 52], ['good', 'work', 6]]
建议将Dictionary用于此类数据。
答案 3 :(得分:0)
为什么不使用lambda函数filter()
而不是循环?看看:
>>> l = [["hello","son", 52],["welcome","home",65],["good","work",6]]
>>> name = "home"
>>> filter(lambda sub_list: name not in sub_list, l)
[['hello', 'son', 52], ['good', 'work', 6]]
>>>
https://docs.python.org/2/library/functions.html#filter了解有关filter()
的更多信息。希望这会有所帮助。
修改强>
没有看到关于添加其他列表以获得第二个答案的最后一个问题。尝试使用append()
方法。
>>> l = [["first", "list"]]
>>> m = ["second", "list"]
>>> l.append(m)
>>> l
[['first', 'list'], ['second', 'list']]
>>>
答案 4 :(得分:0)
不要将列表用作变量名称,它是一种类型。
您可以简单地使用一个函数,并使用两个参数列表中的一个参数和另一个您想要删除的词。
list_1 = [["hello","son", 52],["welcome","home",65],["good","work",6]]
def deleting(list_1,del_name):
for sub_list in list_1:
if del_name in sub_list:
list_1.remove(sub_list)
return list_1
print(deleting(list_1,'hello'))
输出:
[['welcome', 'home', 65], ['good', 'work', 6]]
正如你评论的那样:
如果我们使用name作为输入变量,如name = input(“输入名称:”)。。title()是否可以删除列表中的列表和上面相同的输出
以下是更新的解决方案:
list_1 = [["hello","son", 52],["welcome","home",65],["good","work",6]]
def deleting(list_1):
del_name=input("Enter name: ")
for sub_list in list_1:
if del_name in sub_list:
list_1.remove(sub_list)
return list_1
print(deleting(list_1))
输出:
Enter name: hello
[['welcome', 'home', 65], ['good', 'work', 6]]
答案 5 :(得分:0)
如果要从列表列表中删除此索引列表,则应通过for和while循环进行尝试:
Index=[1,4,6,9]
列表列表:
Coordinates=[[2,3,4,5],[6,7,8,9],[10,11,12,13],[14,15,16,17],[18,19,20,21],[22,23,24,25],[26,27,28,29],[30,31,32,33],[34,35,36,37],[38,39,40,41]]
输出为:
Coordinates=[[2,3,4,5],[10,11,12,13],[14,15,16,17],[22,23,24,25],[30,31,32,33],[34,35,36,37]]
我使用以下代码: 第一类索引列表:
sorted(Index)
while(len(Index)>0):
del Coordinates[Index[0]]
del Index[0]
for i in range(len(Index)):
Index[i]-=1
print(Coordinates)