尽量多挤点时间用来学点知识吧。

list是不同于字符串的,字符串定义后不可修改,而list是可以修改的。

以下是学习笔记:

#!/usr/bin/env python
# coding:utf-8 list1 = [123]
list2 = [456]
print(list1 < list2) # 列表元素的关键点在于逗号分隔
lis1 = [123, 456]
lis2 = [234, 123]
print(lis1 > lis2) # 以列表中第一个元素为比较
print(lis1 + lis2) lis3 = lis2 + ["abcd"] # 使用加号时,必须同类型
print(lis3)
print(lis3 * 4) # 重复四次 # ctrl + Alt + L 可以对当前文档重新格式化。
# 列表支持插入、修改、删除操作
lis3.insert(1, ["dddd", "eee", "tom"]) # 在索引1 插入元素
print(lis3) lis3[0] = '' # 修改元素 print('tom' in lis3[1]) print(lis3[1][1]) # 取二维列表中的元素 print(lis3[1:-1], "\n -------------") # 切片
# 查看list 的函数
# print(dir(list)) del lis3[3] # 删除元素 for item in lis3:
print(item)
#!/usr/bin/env python
# coding:utf-8 # 列表: 打了激素的数组
mix = [1, "abander", 3.14, [3, 6, 9]] mix.append("中文") # 添加单个元素
print(mix) mix.extend(["kkk", 222, "追加"]) # 添加多个元素
print(mix) mix.insert(3, 1.41421) # 在指定位置插入一个元素
print(mix) # 交换两个元素的位置,跟交换两个变量是同样的方法。
tmp = mix[0]
mix[0] = mix[3]
mix[3] = tmp
print(mix) # 元素的删除
mix.remove("kkk")
print(mix)
del mix[0] # 索引删除
del mix[2:] # 切片删除 从下标2往后
print(mix) name = mix.pop() # 弹出最后一个元素。
print(name)
print(mix) na = mix.pop(3) # 弹出指定下标的元素
print(na)
print(mix, "---------------") # 列表的分片
mix[2:4] = [888, 999] # 通过切片的方式修改
print(mix[:4])
print(mix[2:]) # 得到一个列表的拷贝。 而如果直接mixer = mix 的话,则不是拷贝,只是引用。
mixer = mix[:]
mixer.insert(0, 333)
print(mixer)
print(mix) # 总结: 添加元素建议使用 extend , 复制列表也一定要带上 [:]

中间穿插了一个三元运算符的知识点,不同于传统编程语言的写法,

另外还讲了个 assert 函数,当false时直接终止程序.

#!/usr/bin/env python
# coding:utf-8 # 三元操作符
x,y = 4, 5 small = x if x<y else y
print(small) # 断言 assert
# 当关键字后边的条件为假时,程序自动崩溃并抛出AssertionError异常.
# 通常用于调试.
# 当需要确保程序中某个条件一定为真才能让程序正常工作的话,assert就有用了。 # assert 5 < 7
# assert 5 < 4 a = list(range(5)) # 直接list出 range 范围内的元素
print(a)

这些 str, int, list 都是类, 都提供了对应的一些方法。

list类中的一些方法示例:

#!/usr/bin/env python
# coding:utf-8 # 对于字符串转换成列表,内部使用for循环 s = "sadlkfi1235fk"
li = list(s) # 默认是将每个字符拆开成列表
print(li) # ############ 列表转为字符串
# 1. 如果只有字符串 s = ["", "abcde"]
v = "".join(s)
print(v) # 2. 如果既有数字又有字符串 s = [323, 555, "", "strry"]
v = ""
for item in s:
v = v + str(item)
print(v) ##################### 列表类中提供的方法 s.append([5, 6]) # 追加为单个整体
print(s) # s.clear() # 清空
# print(s) s.extend([5, 6]) # 追加为多个元素
print(s)
s.extend("不得了")
print(s) v = s.pop(0) # 删除指定的元素并获取值
print(v) s.remove([5, 6]) # 删除指定值
print(s) s.reverse() # 反转
print(s) # s.sort(reverse=True) # 降序 不加参数表示升序
# print('-----------',s)

列表方法使得列表可以很方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。例如:

>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]

不建议将列表当作队列使用,因为效率不高。参见:http://www.runoob.com/python3/python3-data-structure.html

unpack 方式取列表元素:优点:方便,速度快.

### 补充小知识 unpack方式取列表元素 一 一对应关系
# * 表示多个, _ 表示丢弃不要
li = [2, 5, 1, 98, 32, 4, 7, 3, 9]
a, *_, b = li # 取首尾各一个
print(a, b) c, d, e, *_ = li # 取前三个
print(c, d, e) *_, f, g = li # 取最后2个
print(f, g) #### python支持变量直接交换
x = 33
y = 22 x, y = y, x
print(x, y)

列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。

每个列表推导式都在 for 之后跟一个表达式,然后有零到多个 for 或 if 子句。返回结果是一个根据表达从其后的 for 和 if 上下文环境中生成出来的列表。如果希望表达式推导出一个元组,就必须使用括号。

将列表中每个数值乘三,获得一个新的列表:

>>> vec = [2, 4, 6]
>>> [3*x for x in vec]
[6, 12, 18]
>>> [[x, x**2] for x in vec]
[[2, 4], [4, 16], [6, 36]]
>>> freshfruit = ['  banana', '  loganberry ', 'passion fruit  ']
>>> [weapon.strip() for weapon in freshfruit]
['banana', 'loganberry', 'passion fruit']

用 if 子句作为过滤器:

>>> [3*x for x in vec if x > 3]
[12, 18]
>>> [3*x for x in vec if x < 2]
[]

一些关于循环和其它技巧的演示:

>>> vec1 = [2, 4, 6]
>>> vec2 = [4, 3, -9]
>>> [x*y for x in vec1 for y in vec2]
[8, 6, -18, 16, 12, -36, 24, 18, -54]
>>> [x+y for x in vec1 for y in vec2]
[6, 5, -7, 8, 7, -5, 10, 9, -3]
>>> [vec1[i]*vec2[i] for i in range(len(vec1))]
[8, 12, -54]

列表推导式可以使用复杂表达式或嵌套函数:

>>> [str(round(355/113, i)) for i in range(1, 6)]
['3.1', '3.14', '3.142', '3.1416', '3.14159']

列表还可以嵌套。

以下实例展示了3X4的矩阵列表:

>>> matrix = [
... [1, 2, 3, 4],
... [5, 6, 7, 8],
... [9, 10, 11, 12],
... ]
>>> [[row[i] for row in matrix] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

http://www.runoob.com/python3/python3-data-structure.html

Python基础06_list的更多相关文章

  1. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  2. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  3. Python小白的发展之路之Python基础(一)

    Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...

  4. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  5. 进击的Python【第三章】:Python基础(三)

    Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...

  6. 进击的Python【第二章】:Python基础(二)

    Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...

  7. Python之路【第一篇】python基础

    一.python开发 1.开发: 1)高级语言:python .Java .PHP. C#  Go ruby  c++  ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...

  8. python基础之day1

    Python 简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python为我们提供了非常完善的基础代码库,覆盖了 ...

  9. python基础之文件读写

    python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...

随机推荐

  1. 记录Js 文本框验证 与 IE兼容性

    最近的日常就是将测试小姐姐提交的bug进行修改,想来这种事情还是比较好开展的,毕竟此项目已上线一年多,现在只是一些前端的问题需要改正.实际上手的时候并不是这样,原项目是在谷歌上运行,后来由于要新增一个 ...

  2. Gradle引人注目的特性集

    Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具.它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML.当前其支持的语言限于Java. ...

  3. EasyUI相关知识点整理

    EasyUI相关知识整理 EasyUI是一种基于jQuery.Angular..Vue和React的用户界面插件集合.easyui为创建现代化,互动,JavaScript应用程序,提供必要的功能.也就 ...

  4. Shellcode入门

    Shellcode入门 一.shellcode基础知识 Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限.另外,Shellcode一般是作为 ...

  5. mybatis中的foreach方法

    select  t.service_id, t.prod_id, t.prod_name, t.prod_type, t.buss_type, t.pricing_fee, t.detail from ...

  6. autotools源文件相同/不同目录下

    关于Autotools 我们前面的章节中已经讲到了Makefile的使用(点击进入查看文章).我们知道在Linux下面如果编译一个比较大型的项目,我们可以通过Makefile的方式来完成. 但是,我们 ...

  7. UVA1203 Argus

    思路 用堆维护每个触发器的下一个事件,每次取出一个事件再把对应触发器的下一个事件加入堆即可 代码 #include <cstdio> #include <algorithm> ...

  8. JS开发工具WebStorm使用快捷键

    快捷键可以提高开发效率,最好用的就是这些! 代码编辑 Ctrl + d   复制整行 Ctrl + '-/+'  模块折叠 Ctrl + [ ]   括号匹配 Ctrl + F12 结构展示 Shif ...

  9. Java线程机制学习

    前面的文章中总结过Java中用来解决共享资源竞争导致线程不安全的几种常用方式: synchronized: ReentrantLock: ThreadLocal: 这些都是在简单介绍了基本用法的基础上 ...

  10. npm init 命令生成package.json文件

    通过npm init 命令可以生成一个package.json文件.这个文件是 整个项目的描述文件.通过这个文件可以清楚的知道项目的包依赖关系,版本,作者等信息.每个NPM包都有自己的package. ...