当前位置:   article > 正文

Python入门(三)列表_根据要求访问列表的元素。tempstr = input() lista = list(eval(te

根据要求访问列表的元素。tempstr = input() lista = list(eval(tempstr))

    上篇介绍了python的变量和简单的数据类型,本篇学习和总结列表的使用。正如list、set等列表在Java里广泛的使用,列表在Python里也广泛使用。列表是什么?简单来说,就是一系列元素按照顺序排列起来的集合。

目录

一、访问列表元素

 二、修改、添加、删除元素

1、修改元素

2、添加元素

3、删除元素

三、排序

1、sort方法

2、sorted方法 

3、倒序排列reverse方法 

 四、操作列表

1、遍历列表

2、数字列表

3、使用部分列表 

五、元组


一、访问列表元素

  1. people = ["man", "woman", "child"]
  2. print(people)
  3. print(people[0])
  4. print(people[1])
  5. #访问最后一个元素的三种方式
  6. print(people[2])
  7. print(people[len(people)-1])
  8. print(people[-1])

   

    注意,跟Java很大的一个区别,在通过下标访问列表元素时,index可以为负数。例如,list[-1]表示列表的倒数第一个元素。所以,python列表访问元素的下标范围为[-len(list) — len(list) -1]。当不在该范围时,也会抛出越界的异常。

 二、修改、添加、删除元素

1、修改元素

  1. number = [0, 1, 2]
  2. print(number)
  3. number[0] = 3
  4. number[1] = 4
  5. number[-1] = 5
  6. print(number)

2、添加元素

  1. array = ["b", "c", "d"]
  2. print(array)
  3. array.insert(0, "a")
  4. array.append("e")
  5. print(array)

     使用Insert(index,element)可以在任意位置插入元素;如果想在列表的最后插入元素,可以使用append(element)方法。

3、删除元素

(1)使用del删除任何一个元素,该元素不再被使用。

  1. language = ["python", "java", "c++"]
  2. print(language)
  3. del (language[-1])
  4. print(language)
  5. del (language[-1])
  6. print(language)

(2)使用pop删除任何一个元素,可以用变量接收该元素继续使用。

  1. language = ["python", "java", "c++"]
  2. print(language)
  3. l3 = language.pop()
  4. print(l3)
  5. print(language)
  6. l2 = language.pop(1)
  7. print(l2)
  8. print(language)

    pop的概念类似栈弹出栈顶元素。栈是典型的先进后出数据结构,因此pop操作在不指定index时总会弹出最后一个元素。

(3)使用remove直接删除一个指定值的元素

  1. language = ["python", "java", "c++", "c++"]
  2. print(language)
  3. language.remove("c++")
  4. print(language)

    remove一次只删除一个元素,如果列表里有多个相同的元素,只会删除第一个匹配到的元素。如果需要删除所有的匹配元素,则需要遍历进行删除。

三、排序

1、sort方法

    sort方法默认按首字母从a-z排序,如果想从z-a,可以传入reverse=True。 sort方法是永久修改,不再保持原有的元素排列顺序。

  1. language = ["java", "python", "c++"]
  2. print(language)
  3. language.sort()
  4. print(language)
  5. language.sort(reverse=True)
  6. print(language)

 

2、sorted方法 

    如果想临时的改变列表的排序去使用它,但是还想保留列表原有的顺序,那么可以使用sorted方法。

  1. language = ["java", "python", "c++"]
  2. print(language)
  3. print(sorted(language))
  4. print(language)

3、倒序排列reverse方法 

  1. language = ["java", "python", "c++"]
  2. print(language)
  3. language.reverse()
  4. print(language)

 四、操作列表

1、遍历列表

    Python使用for [元素] in [列表] 语法来进行遍历,注意缩进。如果想在for循环中处理逻辑,应有缩进。如果想在for循环完成后处理逻辑,则不应有缩进。即:for循环后没有缩进的语句只执行一次。

  1. languages = ["python", "java", "c++"]
  2. for language in languages:
  3. print(language)
  4. print("for in end")

 

     需要注意的是:不同于Java,缩进的不合理使用,在python里面可能导致很多问题。例如上面,假如最后一行代码也缩进了,会导致啥问题?毫无疑问,会在每一次打印完元素后紧接着打印一条"for in end"。

    那如果for in的后一行语句没有缩进呢?编译器会提示报错,编译不过。 

 2、数字列表

(1)生成数字列表

使用range()函数可以生成一系列的数字,使用list()函数可以把这一系列的数字快速转化为列表。 注:range()函数可以指定步长,默认为1

  1. # 1-10的列表
  2. numbers = list(range(1, 11))
  3. print(numbers)
  4. # 1-10奇数的列表
  5. numbers = list(range(1, 11, 2))
  6. print(numbers)
  7. # 1-10数字的平方
  8. numbers = []
  9. for number in range(1, 11):
  10. numbers.append(number ** 2)
  11. print(numbers)

(2)数字列表简单统计

   Python提供了几个专门用于处理数字列表的函数,可以轻松地获取最大值、最小值和总和,进而也能获取平均值。

  1. numbers = list(range(1, 11))
  2. print(min(numbers))
  3. print(max(numbers))
  4. print(sum(numbers))
  5. print(sum(numbers)/len(numbers))

(3)列表解析

    前面介绍的生成数字列表方式包含两三行代码,python支持一行代码就能生成数字列表。

  1. numbers = [number**2 for number in range(1, 11)]
  2. print(numbers)

3、使用部分列表 

(1)切片

    指定要使用的第一个元素和最后一个元素的索引创建切片。特别需要注意的是:

  • 如果从索引0开始,那么可以直接[:n]
  • 如果到最后一个索引为止,那么可以缩写为[n:]
  • 支持传入负数,对应切片为倒数第x个元素到倒数第y个元素
  • 前面的索引必须小于后面的索引(注:索引为负数时,没有倒数第0个元素这种说法)
  1. languages = ["python", "java", "c++", "php"]
  2. print(languages)
  3. print(languages[1:3])
  4. print(languages[:3])
  5. print(languages[2:])
  6. print(languages[:-3])
  7. print(languages[-2:])

 (2)遍历切片

    切片返回的是一个新的列表,新的切片列表不会影响原来的列表,我们可以遍历这个切片列表:

  1. languages = ["python", "java", "c++", "php"]
  2. for language in languages[:3]:
  3. print(language)

(3)复制列表

    如果切片既不指定起始索引,也不指定终止索引,那么会得到一个什么样的切片?我们心里应该都有答案了,那就是跟原来的列表内容一样的列表,达到了复制列表的目的。注:通过切片复制得到的列表是跟原来列表完全无关的一个新列表。

  1. languages = ["python", "java", "c++", "php"]
  2. languages_new = languages[:]
  3. print(languages)
  4. print(languages_new)

     上面提到了,使用切片复制而来的列表是一个新列表,跟原来的列表没有关联。那么思考一下如下的代码,会输出什么?

  1. languages = ["python", "java", "c++", "php"]
  2. languages_1 = languages
  3. languages.append("oc")
  4. languages_1.append("js")
  5. print(languages)
  6. print(languages_1)

    答案是:  ​​​

     是不是看着有点不符合预期?为什么不是languages多一个"oc",languages_1多一个"js"?我们直接把languages这个变量赋值给languages_1,这两个变量其实指向的都是同一个列表。所以,对languages的改动其实就是对languages_1的改动,反过来也一样。

五、元组

    上面提到的列表,元素的内容是可变的。如果我们想定义一个元素不可变的列表,那么如何实现。python提供了元组这种列表,定义完不可重新赋值,与列表的区别为使用()而不是[]来定义。

  1. people = ("male", "female")
  2. print(people)
  3. people[1] = "both" # 不能这样
  4. print(people)

    如上所以,从性别来说,人只有男性和女性,没有第三种性别。因此,对于这种不可变的列表,我们可以使用元组。如果要修改,则会编译报错,这是符合预期的:

     元组的遍历跟列表一样:

  1. people = ("male", "female")
  2. print(people)
  3. for one in people:
  4. print(one)

     本篇总结了python里列表的使用,包括:列表的创建,列表元素的增加、删除和修改,列表的排序和遍历,数字列表和简单的统计,列表切片以及不可变的列表-元组等。再下一篇,我们将总结条件控制语句-if语句的使用,让我们的程序可以采取多种不同的运行路线。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/117596?site
推荐阅读
相关标签
  

闽ICP备14008679号