列表与元组


一.字符串的比较   "is" ,   "in" ,  "=="

1.> ==  主要比较的是内容和具体的数据类型 

str1="helloworld"   #定义对象str1并赋值为"helloworld"
str2="helloworld"   #定义对象str2并赋值为"helloworld"
str3="hellopython"   #定义对象str3并赋值为"hellopython"
str4="hello"   #定义对象str4并赋值为"hello"
str5="java"   #定义对象str5并赋值为"java"
if str1==str2: #比较对象str1与str2,如果相同 print("对象str1与对象str2相同") #输出"对象str1与对象str2相同" else: #其他的(比较对象str1与str2,如果不相同) print("对象str1与对象str2不相同") #输出"对象str1与对象str2不相同" if str1==str3: #比较对象str1与str3,如果相同 print("对象str1与对象str3相同") # 输出"对象str1与对象str3相同" else: # 其他的(比较对象str1与str3,如果不相同) print("对象str1与对象str3不相同") # 输出"对象str1与对象str3不相同"

输出结果:

1 对象str1与对象str2相同
2 对象str1与对象str3不相同

2.> in  比较的是内容包含,也暗含了数据类型的比较,因为比较首先前提是数据类型是一致的

 1 str1="helloworld"   #定义对象str1并赋值为"helloworld"
 2 str2="helloworld"   #定义对象str2并赋值为"helloworld"
 3 str3="hellopython"   #定义对象str3并赋值为"hellopython"
 4 str4="hello"   #定义对象str4并赋值为"hello"
 5 str5="java"   #定义对象str5并赋值为"java"
 6 if str4 in str1:   #比较对象str1与str4,如果str1包含str4
 7     print("对象str1包含str4")   #输出"对象str1包含str4"
 8 else:   #其他的(比较对象str1与str4,如果str1不包含str4)
 9     print("对象str1不包含str4")   #输出"对象str1不包含str4"
10 if str5 in str1:   #比较对象str1与str4,如果str1包含str5
11     print("对象str1包含str5")   #输出"对象str1包含str5"
12 else:   #其他的(比较对象str1与str5,如果str1不包含str5)
13     print("对象str1不包含str5")   #输出"对象str1包含str5"

输出结果:

1 对象str1包含str4
2 对象str1不包含str5

3.>is  比较的是两个对象的内存地址 

 1 str1="helloworld"   #定义对象str1并赋值为"helloworld"
 2 str2="helloworld"   #定义对象str2并赋值为"helloworld"
 3 str3="hellopython"   #定义对象str3并赋值为"hellopython"
 4 str4="hello"   #定义对象str4并赋值为"hello"
 5 str5="java"   #定义对象str5并赋值为"java"
 6 if str1 is str2:   #比较对象str1与str2,如果内存地址相同
 7     print("对象str1与对象str2的内存地址相同")   #输出"对象str1与对象str2的内存地址相同"
 8 else:   #其他的(比较对象str1与str2的内存地址,如果不相同)
 9     print("对象str1与对象str2的内存地址不相同")   #输出"对象str1与对象str2的内存地址不相同"
10 if str1 is str3:    #比较对象str1与str3的内存地址,如果相同
11     print("对象str1与对象str3的内存地址相同")  # 输出"对象str1与对象str3的内存地址相同"
12 else:  # 其他的(比较对象str1与str3的内存地址,如果不相同)
13     print("对象str1与对象str3的内存地址不相同")  # 输出"对象str1与对象str3的内存地址不相同"
14 print("对象str1的内存地址:",id(str1))   #输出对象str1的内存地址
15 print("对象str2的内存地址:",id(str2))   #输出对象str2的内存地址
16 print("对象str3的内存地址:",id(str3))   #输出对象str3的内存地址

输出的结果:

1 对象str1与对象str2的内存地址相同
2 对象str1与对象str3的内存地址不相同
3 对象str1的内存地址: 1796129439344
4 对象str2的内存地址: 1796129439344
5 对象str3的内存地址: 1796134211312

 二.列表 list

1.列表的特点:

     ①可存放多个值

     ②按照从左到右的顺序定义列表元素,下标从0开始顺序访问

     ③列表是有序的

     ④列表是可变化的,也就是说可以根据列表的索引位置来修改表的值

2.查看列表的使用方法cd()

#列表的关键字是list
list1=[11,99.99,"python",100,"tang"]   #定义列表list1赋值为--11,99.99,"python",100,"tang"
print(dir(list1))   #输出列表list1的使用方法

   输出的结果为下:

['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

3.添加:

   ①'append'(添加的元素默认放在最后一位)

1 #插入append 添加的元素默认放在最后一位
2 list1=[11,99.99,"python",100,"tang"]   #定义列表list1赋值为--11,99.99,"python",100,"tang"
3 list1.append("boy")   #添加元素”boy“到表list1中
4 print(list1)   #输出列表list1的值

     输出结果:

[11, 99.99, 'python', 100, 'tang', 'boy']

   ②‘insert’(按照索引添加元素,可以随意添加至指定位置)

1 list1=[11,99.99,"python",100,"tang"]   #定义列表list1赋值为--11,99.99,"python",100,"tang"
2 list1.insert(3,"boy")   #添加元素”boy“到表list1中索引为3的地方
3 print(list1)   #输出列表list1的元素

     输出结果:

[11, 99.99, 'python', 'boy', 100, 'tang']

4.删除:

   ①pop(默认删除最后一个元素并输出删除的元素内容)

1 list1=[11,99.99,"python",100,"tang"]   #定义列表list1赋值为--11,99.99,"python",100,"tang"
2 print(list1.pop())   #删除列表list1的最后一个元素输出删除的内容

     输出结果:

tang

   ②remove(可以删除任意位置的元素)

1 list1=[11,99.99,"python",100,"tang"]   #定义列表list1赋值为--11,99.99,"python",100,"tang"
2 list1.remove("python")   #删除列表list1中的“python”元素
3 print(list1)   #输出列表list1的值

      输出结果:

[11, 99.99, 100, 'tang']

5.清空:'clear'

1 list1=[11,99.99,"python",100,"tang"]   #定义列表list1赋值为--11,99.99,"python",100,"tang"
2 list1.clear()   #清空列表list1中元素
3 print(list1)   #输出列表list1

      输出结果:

[]

6.复制:'copy'

1 list1=[11,99.99,"python",100,"tang"]   #定义列表list1赋值为--11,99.99,"python",100,"tang"
2 list2=list1.copy()   #复制列表list1的元素给列表list2
3 print("list1=",list1)   #输出列表list1
4 print("list2=",list2)   #输出列表list2

      输出结果:

1 list1= [11, 99.99, 'python', 100, 'tang']
2 list2= [11, 99.99, 'python', 100, 'tang']

7.查元素的总数:'count'

1 list1=[11,"tang",99.99,"python",100,"tang"]   #定义列表list1赋值为--11,"tang",99.99,"python",100,"tang"
2 print("list1元素tang的总数:",list1.count("tang"))   #输出列表list1中元素tang的总数

      输出结果:

list1元素tang的总数: 2

8.排序:'sort'  (排序是针对同一类型从小到大的排序)

1 list1=[2,40,4,19,7,12,32]   #定义列表list1赋值为--"2,40,4,19,7,12,32"
2 list1.sort()   #对列表list1的元素进行排序
3 print("list1中元素排序之后的结果:",list1)

      输出结果:

list1中元素排序之后的结果: [2, 4, 7, 12, 19, 32, 40]

9.合并:'extend'

1 list1=[2,40,4,19,7,12,32]   #定义列表list1赋值为--"2,40,4,19,7,12,32"
2 list2=[23,"python",34,1,"tang"]   #定义列表list2赋值为--23,"python",34,1,"tang"
3 list1.extend(list2)   #合并列表list2到列表list1中
4 print("list1与list2合并之后的结果:",list1)

      输出结果:

list1与list2合并之后的结果: [2, 40, 4, 19, 7, 12, 32, 23, 'python', 34, 1, 'tang']

10.反转'reverse'

1 list2=[23,"python",34,1,"tang"]   #定义列表list2赋值为--23,"python",34,1,"tang"
2 list2.reverse()   #翻转列表list2
3 print("翻转列表list2之后的结果:",list2)

      输出结果:

翻转列表list2之后的结果: ['tang', 1, 34, 'python', 23]

11.查索引:'index'

list2=[23,"python","tang",34,1,"tang"]   #定义列表list2赋值为--23,"python","tang",34,1,"tang"
print("列表list2中元素“python”的索引:",list2.index("python"))
print("列表list2中元素“tang”的索引:",list2.index("tang"))

      输出结果:

列表list2中元素“python”的索引: 1
列表list2中元素“tang”的索引: 2   (出现多个元素相同时只显示第一个的索引)

三.切片和再探索列表

1.切片(只包含开头不包含结尾)

list2=["C","Python","Java","Net","Go","PHP"]   #定义列表list2赋值为"C","Python","Java","Net","Go","PHP"
print("索引为1的元素:",list2[1])   #输出"Python"
print("索引0-3的元素:",list2[0:3])   #输出"C","Python","Java"
print("索引1-4的元素:",list2[1:4])   #输出"Python","Java","Net"
print("索引为-1的元素:",list2[-1])   #输出"PHP"
print("索引-1到-4的元素:",list2[-4:-1])   #输出'Java', 'Net', 'Go'

      输出结果:

索引为1的元素: Python
索引0-3的元素: ['C', 'Python', 'Java']
索引1-4的元素: ['Python', 'Java', 'Net']
索引为-1的元素: PHP
索引-1到-4的元素: ['Java', 'Net', 'Go']

2.再探索列表

list3=[x for x in range(7)]   #定义列表list3赋值为小于7的数
list4=[]   #定义列表list4
list5=list()   #定义列表list5
for a in list3:   #循环展示列表list3的元素到列表a中
    if a<5:   #如果列表a的元素小于5
        list4.append(a)   #添加到列表list4中(大于5的不会添加)
print("列表list3中小于5的元素:",list4)   #输出列表list3中小于5的元素到列表list4中
for b in list3:    #循环展示列表list3的元素到列表b中
    if b>4:   #如果列表a的元素大于4
        list5.append(b)   #添加到列表list5中(小于4的不会添加)
print("列表list3中大于4的元素:",list5)   #输出列表list3中大于4的元素到列表list5中

      输出结果:

列表list3中小于5的元素: [0, 1, 2, 3, 4]
列表list3中大于4的元素: [5, 6]

四.复杂的数据结构与改变列表的值

1.复杂的数据结构

list1=[[1,3,5,7,9],["tang","lisi","zhangsan"]]
list2=[[1,3,5,7,9,["python","java","c"]],["tang","lisi","zhangsan"]]
list3=[[1,3,5,7,9,["python","java",["helloworld","hellopython"],"c"]],["tang","lisi","zhangsan"]]

print(list1[1][2])   #输出列表list1中的“zhangsan”元素
print(list2[0][5][1])   #输出列表list2中的“java”元素
print(list3[0][5][2][1])   #输出列表list3中的"hellopython"元素

      输出结果:

zhangsan
java
hellopython

2.改变列表的值

list1=[[1,3,5,7,9,["python","java",["helloworld","hellopython"],"c"]],["tang","lisi","zhangsan"]]

 改变列表list1中的元素“java”为“php”

list1[0][5][1]="php"
print(list1)

 输出结果:

[[1, 3, 5, 7, 9, ['python', 'php', ['helloworld', 'hellopython'], 'c']], ['tang', 'lisi', 'zhangsan']]

五.元组tuple

1.元组与列表的区别:list列表是可变的,而tuple元组是不可变的

2.查看元组的使用方法dir()

tuple1=("python",[1,2,3],[4,5,6])

查看元组tuple1的使用方法

print(dir(tuple1))

     输出结果:

['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']

3.查看元素总数count()

tuple1=("python",[1,2,3],[4,5,6],"python")

查看元组tuple1中元素python的数量

print("元组tuple1中元素python的数量为:",tuple1.count("python"))

输出结果:

元组tuple1中元素python的数量为: 2

4.查看元素索引 index()

tuple1=("python",[1,2,3],[4,5,6],"python")

查看元组tuple1中元素[1,2,3]的索引

print("元组tuple1元素[1,2,3]的索引为:",tuple1.index([1,2,3]))

输出结果:

元组tuple1元素[1,2,3]的索引为: 1

5.元组的注意事项:

①当元组中只要一个元素的时候要加逗号,否则会成为字符串的数据类型

如:现有元组tuple1跟元组tuple2,tuple2比tuple1多一个逗号

tuple1=("hello")
tuple2=("hello",)

查看tuple1跟tuple2的数据类型

print("元组tuple1的数据类型为:",type(tuple1))
print("元组tuple1的数据类型为:",type(tuple2))

输出结果:

元组tuple1的数据类型为: <class 'str'>
元组tuple1的数据类型为: <class 'tuple'>

②元组的不可变指的是它不能往里面添加新的元素,也不能对现有的元素进行删除,但是可以修改里面元素的信息跟元素的值(只能对列表里面的值进行修改)

tuple1=("hello",[1,2,3],["python","c","java"])

 如:修改元组tuple1中的c元素为hellopython

tuple1[2][1]="hellopython"
print("tuple1=",tuple1)

输出结果:

print1= ('hello', [1, 2, 3], ['python', 'hellopython', 'java'])