在Python中从列表中删除第5和第7个元素
我是python新手 问题是编写一个函数,它接受10个项的列表并删除第5和第7个元素。该函数应该将剩余的列表转换为元组 我试过了,得到了输出:在Python中从列表中删除第5和第7个元素,python,list,Python,List,我是python新手 问题是编写一个函数,它接受10个项的列表并删除第5和第7个元素。该函数应该将剩余的列表转换为元组 我试过了,得到了输出: x = int(raw_input("Please Enter The Number: ")) items = [raw_input('Enter The List of Items: ' ) for i in range(x)] del items[5:7] print items 请帮我解决这个问题。您可以使用列表理解: print([ite
x = int(raw_input("Please Enter The Number: "))
items = [raw_input('Enter The List of Items: ' ) for i in range(x)]
del items[5:7]
print items
请帮我解决这个问题。您可以使用列表理解:
print([items[i] for i in range(len(items)) if i not in (4,6)])
列表的理解在上有很好的记录。列表理解由括号组成,括号中包含表达式,后跟for子句,然后是零个或多个for或if子句
结果将是一个新的列表,因此如果内存问题,那么只需按正确的顺序删除项目;i、 e.按相反顺序:
del items[6]
del items[4]
最后,在您的特殊情况下,您可以:
del items[4:7:2]
slice函数在上有详细的说明。使用从列表中删除项目
del items[x] # x - list index, starting with 0
当
将删除列表的一部分,这不是您要查找的内容。所以,只要调用del两次,就需要索引了。
要从列表创建元组,只需使用
new_var = tuple(items)
您应该返回给定序列的元组,并删除第5个和第7个:
def fifth_and_seventh_removed(lst):
lst = list(lst)
del lst[6]
del lst[4] # order matters!
return tuple(lst)
如果在del lst[4]后面加上del lst[6],那么将删除第五个和第八个元素,很明显,why部分留给读者作为练习
或者,对于函数方法,使用枚举和生成器表达式:
def tuple_with_elements_removed(l, to_remove=(5, 7)):
"""Return a copy of a iterable with certain elements removed
(whose ordinals are in the to_remove); by default
5th and 7th elements are removed:"""
to_remove = set(to_remove)
return tuple(e for i, e in enumerate(l, 1) if i not in to_remove)
现在,
从列表中删除最高索引。
使用元组将列表转换为元组。
e、 g
代码:
输出:
:~/study$ python test.py
Please Enter The Number: 10
Enter The List of Items: 1
Enter The List of Items: 2
Enter The List of Items: 3
Enter The List of Items: 4
Enter The List of Items: 5
Enter The List of Items: 6
Enter The List of Items: 7
Enter The List of Items: 8
Enter The List of Items: 9
Enter The List of Items: 10
User Input:- ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
After deleting 7th element:- ['1', '2', '3', '4', '5', '6', '8', '9', '10']
After deleting 5th element:- ['1', '2', '3', '4', '6', '8', '9', '10']
Tuple:- ('1', '2', '3', '4', '6', '8', '9', '10')
索引从0开始,按您删除第6项和第7项的方式。您需要删除项目[4],项目[6]项目5和6,即第6和第7个元素;是的,它必须是del items[6],items[4]。可能是重复的。您可能需要解释代码中发生了什么,代码格式也有帮助:谢谢您的建议@kontur。我把提交按钮按得有点快,现在我被否决了。哦,亲爱的。这里是一个向上的投票:不过,一些关于你在一行程序中使用的那些结构的解释可能会有帮助。谢谢@kontur,我链接到文档并添加了额外的解决方案。你必须先删除第7项,然后删除第5项,否则你将删除之前的第8项!很好的解释性回答:
def tuple_with_elements_removed(l, to_remove=(5, 7)):
"""Return a copy of a iterable with certain elements removed
(whose ordinals are in the to_remove); by default
5th and 7th elements are removed:"""
to_remove = set(to_remove)
return tuple(e for i, e in enumerate(l, 1) if i not in to_remove)
>>> print(remove_elements(range(1, 10))
(1, 2, 3, 4, 6, 8, 9)
x = int(raw_input("Please Enter The Number: "))
items = [raw_input('Enter The List of Items: ' ) for i in range(x)]
print "User Input:-", items
del items[6]
print "After deleting 7th element:-", items
del items[4]
print "After deleting 5th element:-", items
items = tuple(items)
print "Tuple:-", items
:~/study$ python test.py
Please Enter The Number: 10
Enter The List of Items: 1
Enter The List of Items: 2
Enter The List of Items: 3
Enter The List of Items: 4
Enter The List of Items: 5
Enter The List of Items: 6
Enter The List of Items: 7
Enter The List of Items: 8
Enter The List of Items: 9
Enter The List of Items: 10
User Input:- ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
After deleting 7th element:- ['1', '2', '3', '4', '5', '6', '8', '9', '10']
After deleting 5th element:- ['1', '2', '3', '4', '6', '8', '9', '10']
Tuple:- ('1', '2', '3', '4', '6', '8', '9', '10')