列表 元组

不知道大家了解过其他的编程语言没有,列表(list)其实就是其他语言的数组一样的,只不过在北方叫馍头子,在南方叫馒头而已,其实都一样的。

列表

  作用:多个装备,多个爱好,多门课程,多个女朋友等

  定义:[] 内可以有多个任意类型的值,逗号分隔

 

对于列表既然我们对列表的里面定义了元素,那么换而言之 我们是可以对它的里面进行增、删、改、查

append--->  追加(在列表的最后的元素后面添加)

hobbies = ['play', 'eat', 'sleep']
hobbies.append('swim')
print(hobbies)

不能直接print出append的过程,因为那样打印出来的是添加的过程是None

li =[]
print(li.append('alex')) 

 

insert------------->按照数组中的下标添加(插入)

因为append是只能在最后面追加 在顾腚位置添加元素 所以我们需要有一个能选择位置的添加,所以就出来了insert

li = [1, 'a', 'b', 'a', 2,3]
li.insert(2, 'xiaosna')
print(li)

extend------------>把两个数组的的内容相加或者把一个元素添加到列表中 也是放在最后(迭代添加)切记一个int类型的无法添加 因为不是迭代添加(迭代添加就是一次一次的添加)

n = [1, 3, 4 , 'b', 'n']
n.extend('7')  #大家看这个7必须用写成字符串类型的不然就不可以使用entend
print(n)

删除:

  pop------>默认删除列表中的最后一个元素,也可以指定索引(下标)来进行删除

  默认删除:

li = [1, 'a', 'b', 'a', 2,3]
li.pop()
print(li)

  按照索引(下标)来删除

li = [1, 'a', 'b', 'a', 2,3]
li.pop(3)  #删除下标是3的元素
print(li)

  pop也是增删改查中唯一一个可以有返回值的其他的打印增删改查的过程的返回值的时候都会报错  但是这个不会

  按照元素删除------>remove  可以指定某个元素来删除,如果列表中有两个a但是你如果只是选中一个a那么只能删除第一个a

    

li = [1, 'a', 'b', 'a', 2,3]
li.remove('a')  #只能删除第一个的a因为
rint(li)

  清空所有的内容-------> clear 把列表中的所有的内容全部的清空

li = [1, 'a', 'b', 'a', 2,3]
li.clear()
print(li)

  既可以清空列表也可以指定删除-----> del  直接把列表删除 也可以指定下标和切片去删除

  删除列表:直接将列表所占的内存都清空了

li = [1, 'a', 'b', 'a', 2,3]
del li
print(li)

  输入列表li会报错:

    Traceback (most recent call last):
    File "E:\Programs\Python\Python3\Codes\Basics\reviews\June\JuneTwentyFive\if_else.py", line 101, in <module>
      print(li)
        NameError: name 'li' is not defined

       因为del是直接将这个列表删除,列表不存在了你还去打印这个列表就会报错

 

        根据下标来删除:

li = [1, 'a', 'b', 'a', 2,3]
del li[3] #根据下标来删除   删除列表中第三个元素
print(li)  # [1, 'a', 'b', 2, 3]

  根据切片去删除:

  

li = [1, 'a', 'b', 'a', 2,3]
del li [0:3:2]  #这个是根据切片和步长去删除的
print(li)

  修改:

  

li = [1, 'a', 'b', 'a', 2,3]
li[3]='Q'  #直接把下标为3的元素给替换成Q
 print(li)

  也可以把整个切片给替换掉:

  

li = [1, 'a', 'b', 'a', 2,3]
li[:3] = 'Q'  #把0到3的切片内的元素给替换成Q
print(li)

 

 

len 长度 它和下标不一样下标是从0 开始的len是从1开始的  和java的一样  大家别记混了

li = [1, 2, 1, 7, 5, 4, 9, 8, 3]
print(len(li))

元组 

元组是有序且不可更改的集合。在 Python 中,元组是用圆括号编写的。

实例

创建元组

thistuple = ("apple", "banana", "cherry")
print(thistuple)

访问元组项目

您可以通过引用方括号内的索引号来访问元组项目:

打印元组中的第二个项目:

thistuple = ("apple", "banana", "cherry")
print(thistuple[1])  # banana

负索引

负索引表示从末尾开始,-1 表示最后一个项目,-2 表示倒数第二个项目,依此类推。

打印元组的最后一个项目:

thistuple = ("apple", "banana", "cherry")
print(thistuple[-1])  # cherry

 

更改元组值

元组一旦创建,您就无法向其添加项目。元组是不可改变的。

tuple 元组:一般不可以对元组内的单个元素进行操作:

l = (1,1,e,4,f)  #这里面的内容不可以进行修改但是可以查询

但是也可以对元组进行操作:当元组内包含字典或者列表的时候你可以修改包含的列表或者字典 其他的不可以修改(儿子不能改,孙子可能改)

 

 

 1、元组本身的元素是可以进行需改(delete,update)的

 2、但是元组内部的子元素所包含的元素是可以进行修改版的(儿子不能修改,孙子可以修改)

 

1、元组内部元素不可修改

修改元组的第一层元素将会提示:TypeError: 'tuple' object does not support item assignment

 

yu = (1, "str", [1, 2, 3, 4])
yu[1] = "strOne"
print(yu)  # TypeError: 'tuple' object does not support item assignment

 

 

 

 

2、元组内部的孙子元素更改

yu = (1, "str", [1, 2, 3, 4])
yu[2][3] = 5  # 将元组的第三个元素列表的第四个元素更改为5
print(yu)  # (1, 'str', [1, 2, 3, 5])

 

3、实在想要更改元组的第一层元素 可以将其转化为列表

yu = (1, "str", [1, 2, 3, 4])

li = list(yu)  # 将元组更改为列表
li[1] = "StrOne"  # 替换更改为列表后的元素
yu = tuple(li)   # 将列表转化为元组 
print(yu)

遍历元组

您可以使用 for 循环遍历元组项目。

yu = (1, "str", [1, 2, 3, 4])

# 使用for循环遍历
for i in yu:
        print(i)

 

 

 

创建有一个项目的元组

如需创建仅包含一个项目的元组,您必须在该项目后添加一个逗号,之前的版本会 Python 无法将变量识别为元组,现在改为不规范的语言了会有波浪线出现,

 

 

 

 

 

删除元组

注释:您无法删除元组中的项目。

元组是不可更改的,因此您无法从中删除项目,但您可以完全删除元组:

del 关键字可以完全删除元组:

thisTuple = ("apple", )
print(thisTuple)

del thisTuple
print(thisTuple)  # NameError: name 'thisTuple' is not defined

合并两个元组

如需连接两个或多个元组,您可以使用 + 运算符:

tuple1 = ('a', 'b', 'c')
tuple2 = (1, 2, 3)
tuple3 = tuple1 + tuple2
print(tuple3) # ('a', 'b', 'c', 1, 2, 3)

tuple() 构造函数

也可以使用 tuple() 构造函数来创建元组。

使用 tuple() 方法来创建元组:

tuple4 = tuple(('apple', 'banana', 'cherry'))  # 请注意双括号
print(tuple4) # ('apple', 'banana', 'cherry')

list1 = ['a', 1, 'b', 2]
print(tuple(list1).__class__)  # 类型就转化为元组了<class 'tuple'>

 

元组方法

Python 提供两个可以在元组上使用的内建方法。

 

 

 

 

python对list去重的各种方法

# 不适用set去重
ids = [1, 2, 3, 3, 4, 2, 3, 4, 5, 6, 1]
new_ids = []
for i in ids:
        if i not in new_ids:
                new_ids.append(i)
print(new_ids)  # [1, 2, 3, 4, 5, 6]

# 使用set方法去重
ids = [1, 2, 3, 3, 4, 2, 3, 4, 5, 6, 1]
ids = list(set(ids))
print(ids)  # [1, 2, 3, 4, 5, 6]

# 按照原来的索引排序
cars = ['Porsche', 'BMW', 'Volvo']
cars.sort(reverse=True)
print(cars)

ids = [1, 4, 3, 3, 4, 2, 3, 4, 5, 6, 1]
news_ids = list(set(ids))
news_ids.sort(key=ids.index)
print(news_ids)

# 也可以使用:

In [5]: ids = [1,4,3,3,4,2,3,4,5,6,1]
In [6]: func = lambda x,y:x if y in x else x + [y]
In [7]: reduce(func, [[], ] + ids)
Out[7]: [1, 4, 3, 2, 5, 6]

 

 

 

 

  

 

posted @ 2018-03-21 16:58  可爱的红领巾  阅读(203)  评论(0编辑  收藏  举报