2018-08-27-day06-列表和元组

1.list列表

列表是python中的容器类型,有序的,可变的容器(可变指的是列表中的元素和元素的位置、个数可变)元素:值的是列表中的每一个内容
有序 -> 可以通过下标来获取元素
可变 -> 可以进行增删改(查)

2.列表的声明:声明了一个列表,列表中有5个元素

scores=[90,80,70,60,50]

scores = [90,80,70,60,50]
print(scores)

声明了一个列表,列表中有三个元素:一个列表中元素的类型可以不一样

person = ['张三',24,'男']
print(person)

声明一个空的列表

person = []

将其他的数据类型转换成列表,序列可以转换成列表
chars = list(序列) 字符串,range(),字典,元组,集合,生成式和迭代器

numbers = list(range(11))
print(numbers)

3.列表的增删改查

1).查:获取单个元素:列表[下标]:下标范围0元素个数-1,或者-1-元素格式

        numbers = [90,80,70,60]
        print(numbers[2])

a.获取部分元素(切片):列表[下标1,下标2] /列表[下标1:下标2:步进]
注意:
下标2的值不能获取到
结果是列表
步进是正的是从前往后去取,步进是负的是从后往前取
切片时,下标是可以越界的

            
        print(numbers[0:2:1])

b.遍历(一个一个获取每个元素)

            for item in numbers:
                print(item)

可以将列表直接放到for循环的in的后边
循环过程中,for后面的变量取的是列表中的每个元素
练习:写一个列表来保存一个班的学生的成绩(6个),统计成绩在80(包括80)分以上的个数

scores = [90,80,70,60,89,50]
count = 0
for score in scores:
    if score >= 80:
        count += 1
print(count)

2).改

语法:列表名[下标] = 新值(通过下标获取元素,修改新值)

numbers[1] = 90

3).增(增加列表的元素,添加元素)

a.列表.append(元素):在列表末尾添加一个元素

numbers.append(90)

b.列表.insert(索引,元素):在指定的下标前添加一个元素
列表中元素的个数发生改变后,列表中的索引会重新分配,插入的下标后
所有下标+1

            numbers.append(0,100)

练习:录入5个学生的成绩,并保存到列表中

scores = []
for _ in range(5):
    scores.append(int(input('Please input score:')))
print(scores)

4).删(删除列表中的元素)

a.del 列表[下标] -->根据下标去删除列表中的元素
del 语句是python中删除数据的语法,他可以删除任何数据:del 变量(删除变量) del 列表(删除整个列表)

            del numbers[1]  #删除下标是1的函数
            del numbers
        
            name ='0'
            del name    #删除变量

b.列表.remove(元素) -->删除列表中指定的元素

            numbers.remove(80)
            print(numbers)

c.列表.pop(下标) -->将指定的下标的元素从列表中取出来,并将列表中的该元素删除

            num = numbers.pop(1)
            print(numbers)
            print(num)

练习:将一个保存成绩的列表中成绩低于60分的全部删除
[78,59,40,90,89,45,69,30] --> [78,90,89,69]

scores = [78,59,40,90,89,45,69,30]
# i = 0
# while i= 60:
        scores02.append(scores[i])
    i += 1
print(scores02)


#切片时复制一份新的列表,遍历是在切片出来的列表中遍历
#删除是在原列表删除
for score in scores[:]:
    if score<60:
        scores.remove(score)
print(scores)

#注意:以后遍历列表的元素的时候,我们一般遍历它的拷贝的值([:])

python中,变量在存数据的值的时候,会根据数据类型的不同,使用两种方式来存值
值类型:变量存数据直接存值,例如:整型、浮点型、布尔、字符串
引用类型:变量存数据的时候,存的是数据在内存中的地址。例如:列表,字典,元组,集合。函数类型,自定义类的对象等
先将列中a1中的数值赋给c1,再将其放到新的地址中

c1 =a1[:]

4.列表中的运算

a).+操作
列表1+列表2:将列表1中的元素和列表2中的元素依次合并,并产生一个新的列表

        a=[1,2]
        list1=a+['abc',100]
        print(list1,a)

b).操作:将列表中的元素重复重复N次,产生一个新的列表
列表1
N:

        list3=a*3
        #[1,2,1,2,1,2]

c).in/not in:判断一个元素是否在/不在列表中

        print(1 in a)   #True

d).len(列表):获取列表中的长度,指的就是列表中元素的个数

        len(序列)
        len(a) 

5.相关的方法

a).list.append(obj):在列表末尾添加元素
b).list.count(obj):统计某一个元素在列表中出现的次数

        a.count(1)       

c).list.extend(序列):将序列中的元素添加到列表中,一个一个取出来添加到列表中

        a.extend('abc') #[1,2,'a','b','c']

d).list.index(obj):获取指定元素在列表中第一次出现的对应的下标

        a.append(2)
        a.index(2)  #1

e).list.pop(下标):取出列表中指定下标的元素
list.pop():取出列表中最后一个元素

        a.pop() #2

f).list.remove(obj)
注意:如果这个元素在列表中有多个,只删除最前面的那一个
g).list.reverse():反转,将列表反向

            a.reverse() #[2,1]

h).list.sort(cmp=None,key=None,reverse=False):对序列进行排序,默认是升序(小到大)
list.sort(reverse=True):降序排序
i).list.clear():将列表中的元素全部清除
j).list.copy():将列表中的元素全部拷贝一份产生一个新的列表
注意:这儿的拷贝是浅拷贝,浅拷贝不涉及引用类型,如果有引用数据类型浅拷贝不会进行真正的拷贝
深拷贝会进行引用数据类型的具体的值的拷贝。
浅拷贝:只是单纯将值进行拷贝,如果是对象就直接拷贝对象的地址
深拷贝:会拷贝对象地址对应的值,并产生一个新的地址,将新的地址进行赋值copy.deepcopy()

a=[1,2]
a.extend('abc')
print(a)

#(tuple)元组就是不可变的列表,列表中除了和可变相关的内容以外,其他的全部适用于元组

6.声明元组:

变量名 = (数据1,数据2,...数据n)
如果元组只有一个元素,必须要向以下方式书写,在唯一一个元素后面加一个逗号
变量名 =(100,)
变量名 = () #表示空的元组

不支持增加、删除、修改。只支持查询相关的操作

        t3=(1,2,3,4,5)

        -切片
            t3[0:3]
        -索引
            t3[0]
        -遍历:
            for i in t3:
                print(i)

7.特殊操作:

        pint=(100,200)
        print(point[0],point[1])
        
        x,y=point   #通过两个变量来获取元组中的唯一两个值
        print(x,y)

通过加*获取元组中的一部分元素值,最终的类型是列表

        user = ('小吕',90,98,56,'男')
        name,*score,sex=user
        
        #获取除第一个以外的后面所有的值
        user2 = ('小红',100,80,70)
        name,*score = user2
        
        user3 = (100,80,70,'小红')
        *score,name = user3

多个值之间用逗号隔开,对应的数据也是元组
a = 1,2,4,5 相当于a=(1,2,4,5)

        print(type(a))

x,y = y,x 相当于 x,y=(y,x)

你可能感兴趣的:(2018-08-27-day06-列表和元组)