Python入门学习笔记————08(list函数,元组)

#传值与传地址的区别
#对于简单的数值,采用传值的操作,即在函数内的操作不影响外面的变量
#对复杂的变量,采用传递地址的操作,此时进行的操作即是对函数本身的操作
def a(n):
    n[2]=300
    print(n)
    return None
def b(n):
    n += 100
    print(n)
    return None
an = [1,3,5,67,8]
bn = 9
print (an)
a(an)
print(an)
print(bn)
b(bn)
print(bn)
[1, 3, 5, 67, 8]
[1, 3, 300, 67, 8]
[1, 3, 300, 67, 8]
9
109
9

关于列表的函数

In [4]:

l = ['as','hello',23,45]
l

Out[4]:

['as', 'hello', 23, 45]

In [6]:

# append 插入内容,在末尾追加
a= [i for i in range(1,5)]
print (a)
a.append(100)
print(a)
[1, 2, 3, 4]
[1, 2, 3, 4, 100]

In [8]:

#insert指定位置插入
#insert(index,data)
print(a)
a.insert(3,666)
print(a)
[1, 2, 3, 666, 4, 100]
[1, 2, 3, 666, 666, 4, 100]

In [11]:

#删除操作
#del  删除
#把最后一为元素拿出来 pop
b=[1,435,6,6]
c = b.pop()
print(c)
print(b)
6
[1, 435, 6]

In [14]:

#remove:在列表中删除指定的值的元素
a = [2,5,2,45,4,5]
print(id(a))
print(a)
a.remove(45)
print(a)
print(id(a))
#两个id相同
140328058912520
[2, 5, 2, 45, 4, 5]
[2, 5, 2, 4, 5]
140328058912520

In [17]:

#clear:清空列表
print(a)
print(id(a))
a.clear()
print(a)
print(id(a))
#如果想要晴空一个列表可以使用a = []或者a = list()
#但是原数据未被删除
[]
140328058912520
[]
140328058912520

In [20]:

#reverse:数据原地fanzhuan
a = [1,2,3,4,5]
print(a)
print(id(a))
a.reverse()
print(a)
print(id(a))
[1, 2, 3, 4, 5]
140327999442824
[5, 4, 3, 2, 1]
140327999442824

In [22]:

#extend:扩展列表,,两个列表,,把一个列表接在另一个后面
a = [1,2,3,4]
b = [5,6,7,8]
print(a)
print(id(a))
a.extend(b)
print(a)
print(id(a))
[1, 2, 3, 4]
140327990302152
[1, 2, 3, 4, 5, 6, 7, 8]
140327990302152

In [29]:

#count:查找列表中指定值或元素的个数
a = [1,2,3,4,5,6,7,8]
print(a)
a.append(8)
print(a)
a.insert(3,8)
print(a)
a_8=a.count(8)
print(a_8)
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8, 8]
[1, 2, 3, 8, 4, 5, 6, 7, 8, 8]
3

In [34]:

#copy :拷贝,浅拷贝
#列表赋值示例 
#只是简单地传递地址,并没有产生新的数据
a = [1,2,3,4,5]
print(a)
b = a
print(b)
b[3]=777
print(a)
print(b)
print('#'*20)
#由此产生了copy函数
b = a.copy()
print(a)
print(id(a))
print(b)
print(id(b))
print('%'*20)
b[3] = 666
print(a)
print(b)
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 2, 3, 777, 5]
[1, 2, 3, 777, 5]
####################
[1, 2, 3, 777, 5]
140327999240520
[1, 2, 3, 777, 5]
140327999106568
%%%%%%%%%%%%%%%%%%%%
[1, 2, 3, 777, 5]
[1, 2, 3, 666, 5]

In [44]:

#深拷贝与浅拷贝的区别
#出现以下结果是应为copy是浅拷贝函数,只拷贝一层
#深层拷贝需要使用特定的工具
a  = [1,2,3,[23,34,45]]
b = a.copy()
print(a)
print(b)
print(id(a))
print(id(b))
print('@'*20)
print(id(a[3]))
print(id(b[3]))
print('$'*20)
a[3][2]=333
print(a)
print(b)
[1, 2, 3, [23, 34, 45]]
[1, 2, 3, [23, 34, 45]]
140327990302600
140327999317512
@@@@@@@@@@@@@@@@@@@@
140327654263880
140327654263880
$$$$$$$$$$$$$$$$$$$$
[1, 2, 3, [23, 34, 333]]
[1, 2, 3, [23, 34, 333]]

元组——tuple

  • 元组可以看作是一个不可更改的list

    元组创建

In [52]:

#创建空元组
t = ()
print(type(t))
#创建一个只有一个值的元组
t = (1,)  #注意逗号
print(type(t))
# 也可这样
t = 1,
print(type(t))
#没有逗号
t = (1)
print(type(t))
#创建多值
t = (1,2,3,4)
print(type(t))
print(t)
#使用其他结构创建
l = [1,2,3,4,5]
t = tuple(l)
print(type(t))
print(t)
<class 'tuple'>
<class 'tuple'>
<class 'tuple'>
<class 'int'>
<class 'tuple'>
(1, 2, 3, 4)
<class 'tuple'>
(1, 2, 3, 4, 5)

元组的特性

  • 有序
  • 元组数据可以访问,不能修改
  • 元组数据可以是任意类型
  • 除了list的可修改外的特性,元组都具有
  • 索引,分片,序列相加,相乘,成员资格操作等,与list一模一样

In [53]:

#索引操作
t = (1,2,3,4)
print(t[2])
3

In [55]:

#超标
print(t[12])
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-55-f3c331a907e0> in <module>()
      1 #超标
----> 2 print(t[12])

IndexError: tuple index out of range

In [78]:

t = (1,2,3,4,5,6)
t1 = t[1:4]
print(id(t))
print(id(t1))
print(t1)
#切片可以超标
t2 = t[1:100]
print(t2)
140328169459432
140327990359816
(2, 3, 4)
(2, 3, 4, 5, 6)

In [81]:

#序列相加
t1 = (1,2,3)
t2 = (4,3,5)
#传址操作
print(t1)
print(id(t1))
t1 = t1 + t2
print(t1)
print(id(t1))
#tuple的不可修改指的是内容的不可修改
t1[1]= 100
(1, 2, 3)
140327990359816
(1, 2, 3, 4, 3, 5)
140327999448744
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-81-80cb26bf82fa> in <module>()
     10 
     11 #tuple的不可修改指的是内容的不可修改
---> 12 t1[1]= 100

TypeError: 'tuple' object does not support item assignment

In [82]:

#元组相乘
t = (1,2,3)
t = t*3
print(t)
(1, 2, 3, 1, 2, 3, 1, 2, 3)

In [83]:

 
#成员检测
t = (1,2,3)
if 2 in t:
    print('YES')
else:
    print('NO')
YES

In [85]:

#元组遍历,一般采用for
#单层遍历
t = (1,2,3,'hello','good','boy')
for i in t:
    print(i,end=' ')
1 2 3 hello good boy 

In [88]:

#双层遍历
t = ((1,2,3),('i','love','hello'),(22,3,4))
for i in t:
    print(i)
 
for m,n,k in t:
        print(m,'--',n,'--',k)
(1, 2, 3)
('i', 'love', 'hello')
(22, 3, 4)
1 -- 2 -- 3
i -- love -- hello
22 -- 3 -- 4

猜你喜欢

转载自blog.csdn.net/weixin_42492218/article/details/85037065
今日推荐