---python_List---它不是一个简单的数组

  第一次,学python的时候,我看到列表这个词语,并不知道这是什么东西。听名字,感觉很高大上。当学习列表完,原来只不过就是一个数组(数组的升级版)。

  List是python里面最基本的数据结构。序列中每个元素都是从索引(下标)从0开始,依次叠加。

  List操作的方法很多,只能熟悉基本常用的这个方法。

  第二个数据结构是元祖,元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表。

  元祖的方法只有count和index。

  1.切片(获取多个元素)

1 poets = ["libai", "dufu", "luyou", "wangwei", "sushi", "qinguan", "qinshaoyou", "liyu", "yanshu"]
2 poets[1:5]  # 从下标1开始取,至第5个内(不包括5)1 <= x < 5
3 # [‘dufu‘, ‘luyou‘, ‘wangwei‘, ‘sushi‘]
4 poets[-1]  # -1直接获取最后一个元素
5 # yanshu
6 poets[3:-1]  # 如果想取最后一个元素,不能这样写,这样包含-1在内,应该是这样写 poets[3:]
7 # [‘wangwei‘, ‘sushi‘, ‘qinguan‘, ‘qinshaoyou‘, ‘liyu‘]
8 poets[::2]  # 最后一个参数 相当于步长,每隔元素就取一个
9 # [‘libai‘, ‘luyou‘, ‘sushi‘, ‘qinshaoyou‘, ‘yanshu‘]

 

  2.追加(在某尾添加一个元素)

1 poets.append("dumu")
2 # [‘libai‘, ‘dufu‘, ‘luyou‘, ‘wangwei‘, ‘sushi‘, ‘qinguan‘, ‘qinshaoyou‘, ‘liyu‘, ‘yanshu‘, ‘dumu‘]
3 # poets = poets.append("dumu") || print(poets.append("dumu"))  该方法没有返回值,如果这样操作得到结果为none

  3.插入

1 sancao = ["caozhi", "coacao", "caopi"]
2 poets.insert(1, sancao)
3 # [‘libai‘, [‘caozhi‘, ‘coacao‘, ‘caopi‘], ‘dufu‘, ‘luyou‘,
4 # ‘wangwei‘, ‘sushi‘, ‘qinguan‘, ‘qinshaoyou‘, ‘liyu‘, ‘yanshu‘, ‘dumu‘]
5 # 这个方法需要两个参数,选择要插入的位置和要插入的元素 如果只用一个参数,会报错:insert() takes exactly 2 arguments (1 given)
6 # 第一个参数 只能是数字 不能是字符串  否则会报错: ‘str‘ object cannot be interpreted as an integer
7 # 第二个参数 可以不填,要填字符串,数字都可以,或者列表等等。。。

  4.更新

  

poets[1] = "dufu" # 更新好像没什么可以说的,就是这样,选择对应下标的元素覆盖,如果括号没有输入索引,会报错语法错误 invalid syntax
# poets[] = "ceishi"
# poets[‘1‘] = "ceishi" # 当然索引只能是整形不能是字符串 list indices must be integers or slices, not str

  5.移除

 

poets = ["libai", "dufu", "libai", "luyou"]
poets.remove("libai")
# [‘dufu‘, ‘libai‘, ‘luyou‘]
#  选择要移除的元素,不是索引,如果有两个相同元素,只移除第一个匹配项
# 如果不输入元素,会报错 x not in list 或者放空 remove() takes exactly one argument (0 given)
poets.pop()  # 默认删除最后一个元素
# [‘dufu‘, ‘libai‘]
poets = ["libai", "dufu", "luyou", "wangwei", "sushi", "qinguan", "qinshaoyou", "liyu", "yanshu"]
poets.pop(4)
# [‘libai‘, ‘dufu‘, ‘luyou‘, ‘wangwei‘, ‘qinguan‘, ‘qinshaoyou‘, ‘liyu‘, ‘yanshu‘]
sancao = ["caocao", "caozhi", "caopi"]
poets.insert(1, sancao)
# [‘libai‘, [‘caocao‘, ‘caozhi‘, ‘caopi‘], ‘dufu‘, ‘luyou‘, ‘wangwei‘, ‘qinguan‘, ‘qinshaoyou‘, ‘liyu‘, ‘yanshu‘]
poets.pop(1)  # pop可以删除嵌套中的列表
# [‘libai‘, ‘dufu‘, ‘luyou‘, ‘wangwei‘, ‘qinguan‘, ‘qinshaoyou‘, ‘liyu‘, ‘yanshu‘]
del poets[0:3]  # 删除列表的元素,此方法可以一次性删除多个元素,跟切片道理一样
# [‘wangwei‘, ‘qinguan‘, ‘qinshaoyou‘, ‘liyu‘, ‘yanshu‘]

  

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

  

1 aList = ["liubei", "guanyu", "zhangfei"]
2 bList = ["zhaoyun", "machao", "huangzhong"]
3 aList.extend(bList)
4 # [‘liubei‘, ‘guanyu‘, ‘zhangfei‘, ‘zhaoyun‘, ‘machao‘, ‘huangzhong‘]
5 aList.extend("bList")  # 如果是字符串,会把字符串分割依次放入列表中
6 # [‘liubei‘, ‘guanyu‘, ‘zhangfei‘, ‘b‘, ‘L‘, ‘i‘, ‘s‘, ‘t‘]
7 aList.extend(1) # int‘ object is not iterable 

  7.统计(统计某个元素在列表中出现的次数)

  

1 List1 = ["a", "v", "b", "a", "a", " ", "",1]
2 List1.count("")  # 统计元素的个数
3 # 3
4 List1.count("")  # 如果不填,应该是统计空格  注意" " 和 ""的区别
5 # 1
6 List1.count(1)  # 也可以统计整形的个数
7 # 1

  8.获取下标

  

1 List1 = ["a", "v", "b", "a", "a", " ", "", 1]
2 List1.index("a")  # 如果有多个相同,至返回第一个元素的下标
3 # 0
4 List1.index("")
5 # 6
6 List1.index("c")  # 如果没找到,如果没有找到对象则抛出异常

  

  9.排序&翻转(对列表的元素进行反向排序)

  



 1 List3 = ["lin", "huang", "li", 1, 3, 4]
 2 # List3.sort()  # python 版本问题  3.0版本 不支持  数字和字符串排序 unorderable types: int() < str()
 3 # python 2.0版本支持 数字和字符串排序
 4 List3[3] = ‘1‘
 5 List3[4] = ‘3‘
 6 List3[5] = ‘4‘
 7 List3.sort()
 8 # [‘1‘, ‘3‘, ‘4‘, ‘huang‘, ‘li‘, ‘lin‘]
 9 List3.reverse()
10 List3
11 # [‘lin‘, ‘li‘, ‘huang‘, ‘4‘, ‘3‘, ‘1‘]

 

  10.拷贝

  

 1 List1 = [‘a‘, ‘b‘, ‘c‘, 2, 3, 4, [8, 9, 4], ‘h‘]
 2 List2 = List1.copy()  # 复制一份出来
 3 List2[0] = ‘A‘  # copy只能完整把列表第一层数据复制一份
 4 List2[6][0] = ‘k‘  # 深层里面列表不会完全复制一份,深层列表都指向同一个内存地址。如果深层的数据很大,整个复制不来很占内存
 5 List1
 6 List2
 7 # [‘a‘, ‘b‘, ‘c‘, 2, 3, 4, [‘k‘, 9, 4], ‘h‘]
 8 # [‘A‘, ‘b‘, ‘c‘, 2, 3, 4, [‘k‘, 9, 4], ‘h‘]
 9 # 如果想实现深层列表完全复制一份,必须调用第三方库
10 # copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
11 # copy.deepcopy 深拷贝 拷贝对象及其子对象
12 import copy
13 # List3 = List1.deepcopy()  # 深copy

  

  

  

时间: 2024-10-05 05:01:57

---python_List---它不是一个简单的数组的相关文章

[睡前灵感and发散思维]由一个简单的数组比较问题而想到的

前言 据说,一只优秀的程序猿往往会有这样的经历,白天遇到一个绞尽脑汁也无法解决的问题,晚上睡了后,半夜在梦中会灵感涌现,立马起床,打开电脑,一气呵成.第二天如果不看注释,完全不知道自己找到了如此巧妙地解决方案. 昨晚躺床上,无意中想到一个问题,突然灵感爆发,想到巧妙解决方法,差点想起床写下来,只是寝室已断电,不了了之.早上爬起来,脸都没洗,先把文章敲了. 问题 非常简单的一个问题,长度为100和101的AB两个数组,数值范围为0-99,含重复,找出来多出来的一个数. 思路 一开始想到的是先排序,

一个简单的数组类操作

要求定义一个数组类,动态分配数组大小,并实现反转与排序操作. 代码如下: class Array { private int a[] = null; private int foot=0; public Array(int len) { if (len > 0) this.a = new int[len]; else this.a = new int[1]; } public boolean add(int i){ if(this.foot<this.a.length){ this.a[foo

一个简单的json数组解析(阿里巴巴)

最近工作中遇到了json字符串解析的问题,但是项目中是有限制的,只能引用阿里巴巴和simple jar,所以我选择了Alibaba的jar,由于很长时间没用过json的东西了,有些淡忘,不免工作中遇到了会花费些许时间再去重拾记忆,所以写了一个简单的JSON 字符串数组的解析实例,仅此作为笔记,以后遇到了可以直接看一下,或许可以节省一时片刻的时间,时间就是金钱,就是生命,就是自信,就是信任... /** * */package com.test.pac1; import java.util.Arr

一个简单的XML与数组之间的转换

xml是网络使用最多的数据交换格式,所以,不掌握怎么操作它,又有蛋疼的了. php中可以操作xml的类/函数很多,个人认为最简单的是SimpleXMLElement这个类,它的使用就跟其名字一样:简单.当然要想全面自如的操作xml,还得借助其他的类.SimpleXMLElement主要是对xml的进行节点的添加和获取,以及输出整个xml文本内容,但是对于实现一个简单的与数组之间的内容转换,已经足够了. 比如我们现在在接一个sdk,对方接口传过来的是一个简单的xml格式数据,我们需要取到它,并作一

一个简单的算法,定义一个长度为n的数组,随机顺序存储1至n的的全部正整数,不重复。

前些天看到.net笔试习题集上的一道小题,要求将1至100内的正整数随机填充到一个长度为100的数组,求一个简单的算法. 今天有空写了一下.代码如下,注释比较详细: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Text.RegularExpressions; 6 7 namespace TestNumber 8 { 9 cl

完成一个简单的时间片轮转多道程序内核代码

王康 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 " 分别是1 存储程序计算机工作模型,cpu执行程序的基础流程: 2 函数调用堆栈:各种寄存器和存储主要是为了指令的传取值,通过eip,esp,eax,ebp和程序内存的分区,搭配push pop call return leave等一系列指令完成函数调用操作. 3 中断:多道批程序! 在复习一下上一讲的几个重要指令

一个简单的税利计算器(网页版)

嗯嗯,做一个简单的网页版的税率计算器,功能比较简单,但是相对比较实用.因为参考了一些其他作品,所以在计算汇率的时候习惯性的是以美元做单位.具体的功能有着较为详细的标注.仅供大家学习参考下. <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>JavaScript Loan Calculator</title>

用php实现一个简单的链式操作

最近在读<php核心技术与最佳实践>这本书,书中第一章提到用__call()方法可以实现一个简单的字符串链式操作,比如,下面这个过滤字符串然后再求长度的操作,一般要这么写: strlen(trim($str)); 那么能否实现下面这种写法呢? $str->trim()->strlen(); 下面就来试下. 链式操作,说白了其实就是链式的调用对象的方法.既然要实现字符串的链式操作,那么就要实现一个字符串类,然后对这个类的对象进行调用操作.我对字符串类的期望如下:(1)当我创建对象时,

iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序

iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序 一.plist文件和项目结构图 说明:这是一个嵌套模型的示例 二.代码示例: YYcarsgroup.h文件代码: // // YYcarsgroup.h // 07-汽车展示(高级) // // Created by apple on 14-5-28. // Copyright (c) 2014年 itcase. All rights reserved. // #import <Foundation/Foundation.h> @