我有这样的事情清单:
My_list = [['A1'],['B2'],['C3']]
我要求用户输入一个LETTER(仅限)来指示要删除的元素。因此,例如,如果用户输入了' B',则应删除第二个条目,列表应如下所示:
My_list = [['A1'],['C3']]
我尝试了几种解决方案,但下面是我最好的尝试......我相信我离最终答案不太远。
My_list = [['A1','B2','C3']]
print('What LETTER pairing would you like to delete?')
get_letter = input()
delete_letter = get_letter.upper()
for each_element in My_list:
for each_pair in each_element:
if each_pair[0] == delete_letter:
location = My_list.index(each_pair)
clues_list.pop(location)
print('done')
当我跑步并进入' B'编译错误说......
ValueError: 'B2' is not in list
...但B2列在清单中!
我哪里错了?
答案 0 :(得分:0)
错误消息是正确的:'B2'
中My_list
不,['B2']
是each_element
!
您需要删除each_pair
,而不是location = None
for index, each_element in enumerate(My_list):
for each_pair in each_element:
if each_pair[0] == delete_letter:
location = index
break
if location is not None:
My_list.pop(location)
,并且在迭代列表时不应该删除。{p>例如,尝试:
data = {'A': 1, 'B': 2, 'C': 3}
然而,似乎不同的数据结构对您更有用,例如字典:
if delete_letter in data:
del data[delete_letter]
代码变得如此简单:
{{1}}
答案 1 :(得分:0)
你可以用更简洁的方式完成它(使用list comprehension):
My_list = [['A1','B2','C3']]
get_letter = raw_input('What LETTER pairing would you like to delete? ')
delete_letter = get_letter.upper()
print delete_letter
new_list = [var for var in My_list[0] if delete_letter not in var]
print new_list
一些警告:not in
会尝试在变量中找到delete_letter
,因此如果您希望它具有更精确的匹配,您可以查看{{1 }}。然后,我的一段代码盲目地跟随你的列表列表。