首页 > 编程语言 >python数据分析-List(上)

python数据分析-List(上)

时间:2022-09-02 11:44:46浏览次数:57  
标签:数据分析 Michael python List 元素 list 列表 names print

列表(list)作为python最基础也是最重要的数据类型之一,在python数据分析以及其他用途中有着重要的作用。

 

在此,将通过两篇文章来对List做一个相对系统的介绍,希望下述内容能对于熟悉list有所帮助。

 

1 初识list

list 是 Python 内置的一种高级数据类型。 list是一种有序的集合,在python中应用很广泛。

  1. names = ['James', 'Michael', 'Emma', 'Emily']

  2.  

  3. print("names的数据类型:",type(names))

  4. print(names)

  1. names的数据类型: <class 'list'>

  2. ['James', 'Michael', 'Emma', 'Emily']

用 len() 可获得 list 的长度,即list集合所包含的元素个数,如下:

  1. n = len(names)

  2. print(n)

  1. 4

空的list

如果list中一个元素也没有,我们可以定义一个空的list,则其长度为0,如下:

  1. empty_list = []

  2. empty_list

  1. []

  1. len(empty_list)

  1. 0

2 访问列表中的值

用索引来访问 list 中的每个元素,请注意索引是从 0 开始, 最后一个的索引编号为 n-1, 即所有元素的编号依次为 (0,1, 2, ..., n-1)。

list中单个元素的访问如下:

  1. names[0]

  1. 'James'

  1. names[1]

  1. 'Michael'

如果要获取最后一个元素,也可以用 -1 来做索引,倒数第二个元素可以用 -2 来索引,其他以此类推。

  1. names[-1]

  1. 'Emily'

  1. names[-2]

  1. 'Emma'

可以通过 for 循环来列出所有元素。有两种方法可以实现,如下:

方法1

  1. for name in names:

  2.    print(name)

  1. James

  2. Michael

  3. Emma

  4. Emily

方法2

  1. for i in range(len(names)):

  2.    print(names[i])

  1. James

  2. Michael

  3. Emma

  4. Emily

3 列表的操作、函数及方法

3.1 list中元素的增、改、删等操作

list是一个可变的有序列表,可以通过添加、修改、删除等操作来操作list中的元素。

往list中添加元素

可以通过 append() 和 insert() 方法来往 list 中添加元素。

其中, append() 方法是在 list 的末尾添加元素; insert() 是在指定位置添加元素。

如下:

  1. names.append('Jacob')

  2. names

  1. ['James', 'Michael', 'Emma', 'Emily', 'Jacob']

  1. names.insert(1, 'Ava')

  2. names

  1. ['James', 'Ava', 'Michael', 'Emma', 'Emily', 'Jacob']

请注意,上述 insert() 方法中, "1" 表示在第2个位置添加新的元素(索引是从0开始的)

删除list中的元素

  • 用 pop() 方法删除list末尾的元素

  1. names.pop()

  1. 'Jacob'

  1. names

  1. ['James', 'Ava', 'Michael', 'Emma', 'Emily']

  • 删除指定位置的元素,用 pop(i) 方法

  1. names.pop(0)

  1. 'James'

  1. names

  1. ['Ava', 'Michael', 'Emma', 'Emily']

修改list中的元素

如果需要修改 list 中的元素, 可以直接通过 list 的索引进行赋值来实现, 如下:

  1. names[2] = 'Lemon'

  2. names

  1. ['Ava', 'Michael', 'Lemon', 'Emily']

3.2 列表操作符

列表可以进行 相加 "+" 和 相乘 "*" 运算,"+" 相当于拼接列表, "*" 相当于重复列表。

此外,还可以判断元素是否存在于列表中。

  1. # 列表相加

  2. print("列表相加:",[1,2,3]+['a','b'])

  3.  

  4. # 列表相乘

  5. print("列表相乘:",['a','b']*3)

  6.  

  7. # 判断元素是否存在于列表中

  8. print("判断元素是否存在于列表中:", 'a' in ['a', 'b'])

  9. print("判断元素是否存在于列表中:", 'a' not in ['a', 'b'])

  1. 列表相加: [1, 2, 3, 'a', 'b']

  2. 列表相乘: ['a', 'b', 'a', 'b', 'a', 'b']

  3. 判断元素是否存在于列表中: True

  4. 判断元素是否存在于列表中: False

3.3 列表函数&方法

列表的函数包括:

  • len(list),列表元素个数,即列表的长度

  • max(list),返回列表元素最大值

  • min(list),返回列表元素最小值

  • list(sep),将元组转为列表

列表的方法

列表的方法除了前面提到的增、改、删等方法外,还有其他一些方法,如下:

  • list.count(obj),统计某个元素在列表中出现的次数

  • list.extend(seq),在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

  • list.index(obj),从列表中找出某个值第一个匹配项的索引位置

  • list.remove(obj),移除列表中某个值的第一个匹配项

  • list.sort(),对原列表进行排序

  • list.reverse(),对原列表进行反向排序

  1. list1 = [1,2,3,9,6,3]

  2. list2 = [3, 8, 5, 4, 7,4]

  3. tuple1 = (3,9,6)

  4.  

  5. # 列表的函数

  6. print("列表最大值:",max(list1))

  7. print("列表最小值:",min(list1))

  8. print("将元组转为列表:",list(tuple1))

  9.  

  10. # 列表的方法

  11. print("count:",list1.count(3))

  12.  

  13. list1.extend(list2)

  14. print("extend:",list1)

  15.  

  16. print("index:",list2.index(4))

  17.  

  18. list2.remove(4)

  19. print("remove:",list2)

  20.  

  21. list2.sort()

  22. print("sort:",list2)

  23.  

  24. list2.reverse()

  25. print("reverse:",list2)

  1. 列表最大值: 9

  2. 列表最小值: 1

  3. 将元组转为列表: [3, 9, 6]

  4. count: 2

  5. extend: [1, 2, 3, 9, 6, 3, 3, 8, 5, 4, 7, 4]

  6. index: 3

  7. remove: [3, 8, 5, 7, 4]

  8. sort: [3, 4, 5, 7, 8]

  9. reverse: [8, 7, 5, 4, 3]

4 list中元素的类型可以多样

同一个 list 中的元素的类型可以是字符串(str)、整型(int)、布尔型(Boolean)、以及嵌套的list等,举例如下:

  1. a_list = ['Lemon', 100, ['a', 'b', 'c', 'd'], True]

  2. a_list

  1. ['Lemon', 100, ['a', 'b', 'c', 'd'], True]

  1. a_list[0]

  1. 'Lemon'

  1. a_list[2]

  1. ['a', 'b', 'c', 'd']

在上述的 a_list 中, 第3个元素 (即 alist[2]) 其实本身也是一个 list。

list中的元素也可以是list,这样的话,可以进行多重list的嵌套。

上述 list,也可以按下述方式来理解。

  1. b_list = ['a', 'b', 'c', 'd']

  2. a_list = ['Lemon', 100, b_list, True]

  3. a_list

  1. ['Lemon', 100, ['a', 'b', 'c', 'd'], True]

针对 a_list , 如果想获取其中元素 b_list 里面的单个元素 “b”,该如何实现呢?

其实,这个类似二维数组,用二维的索引可以获取,如下:

  1. item_b = a_list[2][1]

  2. item_b

  1. 'b'

上述 [2] 表示获取 a_list 的第3个元素,即 b_list, [1] 表示获取 b_list 的第2个元素,即“b”

5 list 的切片(slices)

前面描述了 list 中单个元素如何获取,如果想获取其中连续的部分元素,该如何实现呢。

这里可以通过切片(slices)的形式来获取部分连续的元素。

  1. c_list = ['James', 'Ava', 'Michael', 'Emma', 'Emily', 'Jacob']

  2. c_list

  1. ['James', 'Ava', 'Michael', 'Emma', 'Emily', 'Jacob']

list 中以切片形式使用时,其结构可参考 new_list[start: end : step]

其中 "start" 和 "end" 表示索引位置的开始和结束,选取的元素包含 "start",但不包含 "end"

"step" 表示步长,默认情况下, "step"为1,演示如下:

Example-1:

  1. c_list[1:3]

  1. ['Ava', 'Michael']

example-1 中, 1:3 表示切片选取的是第2个元素和第3个元素,即包含索引为1和索引为2的元素。 相当于获取 c_list[1] 和 c_list[2]

Example-2:

  1. c_list[::2]

  1. ['James', 'Michael', 'Emily']

example-2 中 "start" 和 "end" 为空的时候,默认是全选,即 "start" 为 0, "end" 为 len(c_list)-1

所以 c_list[::2] 表示的是从索引为 0 开始,以步长为2来选择元素。

接下来看以下结合上述两个例子的演示:

  1. c_list[1:3:2]

  1. ['Ava']

Example-3:

前面提到,new_list[-1]表示获取最后一个元素, 在切片的步长 "step" 中,也可以是负数,比如 "-1":

  1. c_list[::-1]

  1. ['Jacob', 'Emily', 'Emma', 'Michael', 'Ava', 'James']

从上述结果可以看出, 当 "step"为 -1 时,我们发现是将列表进行了逆序排序。

再看看步长为 "-2" 时的结果:

  1. c_list[::-2]

  1. ['Jacob', 'Emma', 'Ava']

可以这么理解,当步长为正数时,是从左到右以该步长来获取列表中的元素;

而当步长为负数时,是从右到左以该步长的绝对值来获取列表中的元素。

Example-4:

如果想获取离散的元素,比如想获得第1、2、4个元素,能不能通过离散的索引值来获取呢?

我们先来试验一下:

  1. # c_list[0, 1, 3]

  1. c_list[0, 1, 3]

  2.  

  3. out:

  4. ---------------------------------------------------------------------------

  5. TypeError                                 Traceback (most recent call last)

  6. <ipython-input-30-68d834a60325> in <module>()

  7. ----> 1 c_list[0, 1, 3]

  8.  

  9. TypeError: list indices must be integers or slices, not tuple

从运行结果可以之道,直接取离散的索引号是不行的,它提示 list的索引必须是整数或者 slices。

那么,我们有没有方法来获取这些离散的元素呢?

方法肯定是有的,其中一种方法就是使用 列表推导式。

标签:数据分析,Michael,python,List,元素,list,列表,names,print
From: https://www.cnblogs.com/jiangnanjiangnan/p/16649286.html

相关文章

  • Flet-基于Flutter的Python跨平台开发框架
    什么是FletFlet是一个框架,允许用你喜欢的语言构建交互式多用户Web,桌面和移动应用程序,而无需拥有前端开发的经验。主要特点在几分钟内从想法到应用程序为您的团队,周末项......
  • Python风格规范(转载)
    Python风格规范(转载)https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/#我觉得任何一个初学者都应该好好的研读,......
  • 31 | JAVA集合PriorityQueue(同样是实现Queue接口的实现,和LinkedList同级别)
    PriorityQueuePriorityQueue和Queue的区别在于,它的出队顺序与元素的优先级有关,对PriorityQueue调用remove()或poll()方法,返回的总是优先级最高的元素。要使用PriorityQue......
  • 32 | JAVA集合Deque(一种接口,比Queue更丰富的接口,底层实现可为LinkedList)
    Deque如果把条件放松一下,允许两头都进,两头都出,这种队列叫双端队列(DoubleEndedQueue),学名Deque。Java集合提供了接口Deque来实现一个双端队列,它的功能是:既可以添加到队......
  • python的类方法中下划线表示含义
    __foo__: 定义的是特殊方法,一般是系统定义名字,如__init__() 之类的。_foo: 以单下划线开头的表示的是protected类型的变量,即保护类型只能允许其本身与子类进行访问......
  • 30 | JAVA集合Queue(一种接口,实现为LinkedList)
    Queue队列(Queue)是一种经常使用的集合。Queue实际上是实现了一个先进先出(FIFO:FirstInFirstOut)的有序表。它和List的区别在于,List可以在任意位置添加和删除元素,而Queue只......
  • python logger模块
    1、logging模块简介logging模块事python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等。Logger从来不直接实例化,经常通......
  • 24 | JAVA集合之List(实际为接口)
    使用List在集合类中,List是最基础的一种集合:它是一种有序列表。List下的两种具体实现ArrayList和LinkedList,本别对应数组和链表。List的接口List<E>接口在末......
  • 使用 CerealBox 将 AWS DynamoDB JSON 序列化为 Python dict
    使用CerealBox将AWSDynamoDBJSON序列化为Pythondict在这里,我们讨论了一个快速演练和参考代码,用于为您的下一个AWS应用程序简化DynamoDBJSON序列化过程。绒......
  • 使用 Python 进行 A/B 测试应用程序
    使用Python进行A/B测试应用程序https://www.reliablesoft.net/ab-testing-principles-optimize-your-marketing-and-skyrocket-conversions/什么是A/B测试?A/B......