一时兴起今天又回过头来补一下列表和元组,先来说说列表哈,列表其实是python最经常用到的数据类型了,不仅经常用还很强大呢,这个跟C语言里面的数组是类似的,列表当然也可以增删改查,不过我可没打算用之前字典的方式给大家讲解,我给大家讲解下列表的常用方法就好了。

1、首先我先讲下怎么创建一个列表,你看下方list1是创建了一个空列表,list2是创建了一个有值列表。

 

2、list1.append(),这个方法是在列表末尾追加,看下面例子:

记得append()方法是列表末尾追加

这种末尾追加虽然可以加进去,但是有时候我想中间插入咋办呢?下面这个方法就是满足这个需求滴

3、list1.insert(index,element),insex为索引号,也就是第几位,位置是从0开始的,基本上语言的第一位索引都是0,element是自己想要加入列表的值,啥值都行,加列表都行,看实例如下:

当然那你说我只知道列表有个值,而且我想将新的值加入到列表那个值的后面,那这咋办呢?是不是我们得先将那个值得索引打出来,你才能根据索引插入呢?

4、list1.index(value),value就是在字典里的值,返回当前value的索引号(只返回找到的第一个),如果你输入的是列表中不存在的那么程序就会报错,实例如下:

大家有没有发现,用insert加入列表的话依旧还是列表,那我想将一个列表的值加入另一个列表但是加入后又不以列表的形式显示咋搞呢?insert加入列表如下:

5、list1.extend(list2),在列表末尾一次性添加列表的多个值;修改了被扩展序列,而连接操作会返回全新的列表。

 list1就变成了两个列表的和了,记住新列表不会去重的。

  能加便能删,下面介绍下列表删除的方法

6、list1.pop(index),移除列表中的一个元素;默认是最后一个。是列表操作中唯一一个,既能修改列表,又能返回元素值的列表方法。

 记住pop后面是跟索引号的 ,索引号不存在的话会报错,不填索引号的话就是删除最后一个

通过索引去移除列表元素固然好,但是有时候你只知道想要移除的元素并不知道元素位置,如果用index的话又显得很累赘,因此列表又多了

7、list1.remove(element),移除列表中某个值的第一个匹配项。

看,移除了第一个hello,但是如果我们想移除第二个或者是全部hello呢?

这里先讲下全部移除吧,目前我想到的方法就是,依旧用remove这个方法,我们可以先统计下想要删除的元素在列表中有多少,然后用个for循环执行刚刚统计那么多次不就删除了吗?不多说了贴个代码给大家看下(count方法看下面第8):

是不是hello全部被删了?当然可能还有更好的,目前这使我想到的,欢迎大家指教哈,那么如果我想删除第二个或者第三个呢?琢磨了下自己写了个粗略版的,以后学深了再修改为更好的写法。

def delete_element(list1,element,num):
    delete_num = 0
    if element in list1:
        if num == 'alldelete':
            for i in range(list1.count(element)):
                list1.remove(element)
        else:
            num = int(num)
            while num:
                print(num)
                delete_num = list1.index(element,delete_num)
                delete_num += 1
            list1.pop(delete_num-1)       
    else:
        print("你输入的值不在列表里面!")

list1 = [1, 2, 'hello', 3, 4, 'hello', 'word', 'hello']
element = input("请输入你想要删除的元素:")
num = input("请输入你想要删除第几个元素:(alldelete为全部删除)")
delete_element(list1,element,num)
print(list1)

8、list1.count(element),统计元素在列表中出现的次数

当然你除了一个一个清除之外还可以一次性清除列表所有元素,用clear就行了,这个跟字典的方法类似

9、list1.clear(),这个就不演示了,因为作用很明显,就是清空列表的值,但是列表还在的,这个跟字典的del可不同喔,只是情况列表内容呦,并未清除对象。

10、list1.copy(),这个你记住是复制一个副本,原值和新复制的变量互不影响,与=不同,=是对象引用而已。

  上面说了那么多列表的方法,接下来呢说下列表的排序,这个用起来可能相对麻烦点,也许真的是!

11、list1.sort(key=None, reverse=False),这个是列表正向排序,该方法没有返回值,下面是简单排序,大家看下,这是最简单的用法,参数默认都为None。

接着是较为复杂的用法,下面是以列表中每一个元素的第二位进行排序。

既然说到了列表的sort那就不得不提到python本身支持的函数sorted,其实一般用sorted比较多,因为更加灵活些,下面介绍用法:

sorted(iterable[, key][, reverse]) ,sorted的第一个参数是一个迭代器,第二个参数是用来排序的key,第三个参数的排序数序:正序还是倒序 ,该方法返回列表

记得列表的sort是改变原列表的,而sorted方法是不改变原列表的。

刚刚使用列表正向排序,然后key也就是排序的规则是abs绝对值,因此 排序是图中所示。

默认reverse是Flase,如果写成True就变成了反向排序,看下面的结果就与刚才相反了。

12、list1.reverse(),反向列表中元素,该方法没有返回值,看个例子就知道了

就是把列表反过来即可

 

好了,上面讲述了关于列表的方法,下面接着来讲下元组吧,Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

1、元组的创建,看下面的例子,创建元组可以直接tup1 = (),如果元组只有一个值时,又想创建为元组记得在元素后加个逗号,

元组方法比较少,因为不能修改,只有count和index

2、tup1.count(element)和tup1.index(element),这两个和列表差不多我就不多说了,给个例子大家看下就好

3、列表与元组的相互转换,其实这个也没啥好说的,但是之后估计也会用到,所以还是给大家说下吧!继续看实例:

看,是不是很简单呢,就是用list和tuple即可

4、最后给大家讲解下切片吧,这个还是比较牛逼的,大家看看下面的实例是否能看懂呢?记得索引是从0开始,而且切片的序号是只要左界线不要右边界的喔

5、突然想起来好像还有点东西没说,虽然元组不能修改,但是也可以通过“+”进行元组连接,或者通过del进行元组删除操作。 

 

posted on 2017-11-07 16:19  ~泪小白~  阅读(447)  评论(0编辑  收藏  举报