我是python的新手。
问题是写一个函数,它取一个10项的列表并删除第5和第7个元素。该函数应该将剩余的列表转换为元组。
我试过通过dint得到输出:
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
请帮我解决这个问题。
答案 0 :(得分:1)
您可以使用列表理解:
print([items[i] for i in range(len(items)) if i not in (4,6)])
python.org详细记录了列表理解。 "列表推导由括号组成,括号中包含一个表达式,后跟一个for子句,然后是零个或多个for或if子句。"
结果将是一个新列表,因此如果内存很重要,那么只需按正确的顺序删除项目;即以相反的顺序:
del items[6]
del items[4]
最后在你的特殊情况下你可以做到:
del items[4:7:2]
切片功能在python.org上有详细记录。
答案 1 :(得分:1)
x = int(raw_input("Please Enter The Number: "))
items = [raw_input('Enter The List of Items: ' ) for i in range(x)]
del items[6]
del items[4]
print items
答案 2 :(得分:1)
使用
从列表中删除项目del items[x] # x - list index, starting with 0
虽然
del items[x:y]
将删除列表片段,而不是您要查找的内容。所以,只需要调用del
两次,需要索引。
要从列表创建元组,只需使用
new_var = tuple(items)
答案 3 :(得分:1)
你应该返回第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]
,则会清除第五和第八个元素(为什么部分留给读者练习)。
或者对于功能方法,使用enumerate
,使用生成器表达式:
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)
答案 4 :(得分:0)
tuple()
将列表转换为元组。e.g。
代码:
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')