sorted(iterable, key=None, reverse=False) --> new sorted list eg. sorted(l, key = l.index),生成一个新的了list, 原list不变
2. sort(...)
L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* eg. l.sort(key = l.index), 返回一个新的list给原来的list
3. index(...)
L.index(value, [start, [stop]]) -> integer -- return first index of value. 返回第一个value所在的index
Raises ValueError if the value is not present.
4. pop(...)
L.pop([index]) -> item -- remove and return item at index (default last). remove参数index指向的value,返回的是value
Raises IndexError if list is empty or index is out of range.
5.remove(...)
L.remove(value) -> None -- remove first occurrence of value. remove第一个value, 返回none
Raises ValueError if the value is not present.
6. if __name__ = '__main__'的作用:
模块是对象,并且所有的模块都有一个内置属性__name__,它的值取决于模块是如何应用的。如果import了这个模块,__name__通常为模块文件名,不带路径
或者扩展名。如果不import,像一个标准程序一样运行这个模块,__name__的值将是一个特别缺省的”__main__“
方法一:将列表排序后,从最后一个元素开始循环迭代列表,判断相邻的两个元素是否相等
有赋值,排序操作。由于Pyhton变量也是对象,中每迭代出一个与last_item不相等的元素后,都重新建立一个局部变量并丢弃原来的变量,需要消耗更多内存。
而且由于排序操作,相对位置被破坏了。
def sort_one(list):
list.sort()
length = len(list)
last_item = list[length -1 ]
for i in range(len(list) - 2, -1, -1):
if last_item == list[i]:
list.remove(last_item)
else:
last_item = list[i]
if __name__ == '__main__':
sort_one(a)
print(a)
方法二: 建立一个临时列表,迭代循环出的元素如果不在临时列表里,就将其加入临时列表,最后返回临时列表
每次旨在原来的列表上增加一个索引和值,相比方法一效率更高
def sort_two(list):
list.sort()
temp_list = []
for value in list:
if value not in temp_list:
temp_list.append(value)
return temp_list
if __name__ == '__main__':
print(sort_two(a))
方法三:效率最高,使用set,好处是快速,坏处是打乱了列表的顺序,需要重新sort
def sort_three(list):
new_list = sorted(set(list))
return new_list
if __name__ == '__main__':
print(sort_three(a))