列表

lst = [i for i in range(10)]

切片

# 把下标小于2的显示出来
print(lst[:2])
# 把10个数有大到小输出
print(lst[::-1])
# 把下标为奇数的数字显示出来
print(lst[::2])

显示结果

[0, 1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
[0, 2, 4, 6, 8]

当切片时,会生成新的内存来存储切之后的列表。

l1 = lst
l2 = lst[::]
print(id(lst)) #
print(id(l1)) #
print(id(l2)) #

列表生成器  —— 一个使你代码牛逼的利器

# 显示能被2整除的数字
l3 = [i for i in lst if i % 2 == 0] # 注意第一个i、第二个i和第3个i要相对应

嵌套列表

# 嵌套列表
lst = [1, [2, 3]]
for i in lst:
print(i)
# 显示结果
#
# [2, 3]
for i in range(1, 4):
for j in range(5, 7):
print(i + j, end=" ")
print()

显示结果

6 7
7 8
8 9

append追加

a = [2, 3, 5]
a.append(100)
print(a)

[2, 3, 5, 100]

a.pop()
print(a)

[2, 3, 5]

b = [2, 4]
a.extend(b)
print(a)

[2, 3, 5, 2, 4]

浅拷贝

列表在存储嵌套列表时,l1 = [1, [2, 5, 6], 9]

[2, 5, 6]在l1的存储形式为[2, 5, 6]的指针

在浅拷贝时,拷贝的只是列表的连接

拷贝之后会形成新的地址

lst2 = lst.copy()
print(id(lst))
print(id(lst2))
#
#
lst2[0] = 10
print(lst)
print(lst2)

[1, [2, 5, 6], 9]
[10, [2, 5, 6], 9]

可以看到,lst2的第一个元素变成了10,而lst却没有改变

lst2[1][0] = 100

print(lst)
print(lst2)

[1, [100, 5, 6], 9]
[10, [100, 5, 6], 9]

而此时lst2的第二个元素的第一个元素会变,但lst的元素也变了。

元组

tuple, 我个人认为元组就是一个简化了的列表,也许tuple有自己的功能,但我还是觉得,元组是为了节省空间而存在的。

创建一个空元组

t1 = ()
print(type(t1))

成员检测

t2 = (1, 2, 3)
print(1 in t2)
print(4 in t2)

但我为啥会说是简化的列表呢?

tuple与list的不同

list可以增删改

而tuple不可以,tuple

t2 = (1, 2, 3)
t2.pop()
print(t2)

当我把最后一个元素删除时,你会发现Python的解释器会报错,说明了元组不能自身实现增删改的操作。

字典

字典的创建和集合差不多,都用大括号,但字典使用的是键值对

创建一个字典:

d1 = {'one': 1, 'two': 2}
print(d1)

显示结果为:{'two': 2, 'one': 1}

成员检测:

检测的是key键

print('one' in d1)
print(1 in d1)

显示结果:

True
False

在存储是,字典会按照key进行哈希存储,所以只能检测key是否存在

字典的循环

for i in d1:
print(i)
# two
# one for k in d1.keys():
print(k)
# one
# two for v in d1.values():
print(v)
#
# for k, v in d1.items():
print(k , '-----' , v)
# one ----- 1
# two ----- 2

我们在取字典值的时候,可以使用get。

print(d1.get('one'))
print(d1.get('three'))

显示结果

1

None

没有此键时,显示结果为None,而不会报错,而用d1['three']时,会报错。

集合

创建一个集合

s1 = {2, 3, 2, 4, 3, 2, 8}
print(s1)

结果为:{8, 2, 3, 4}

说明了集合的一个作用是:去重,一个集合看起来基本上是无序的。

集合增加元素:

s1.add(1)
print(s1)

集合删除元素:

如果能记住,建议用discard。当集合中没有此元素时,不会报错。

s1.discard(1)  # 把集合中的1删除
print(s1)
s1.discard(1) # 集合中已经没有1 但没有报错
print(s1)

也可以使用remove,但没有此元素时,会报错

集合适用于减法:

s3 = {2, 3, 4}
s4 = {4, 5}
print(s3 - s4)

显示结果为:{2, 3}

会把s3集合中的与s4相同的元素删除

最新文章

  1. ThinkPHP 3.2.3(二)配置
  2. Sort 整理
  3. html语意化标签
  4. How to Setup Chroot SFTP in Linux (Allow Only SFTP, not SSH)
  5. highcharts实例教程一:结合php与mysql生成折线图
  6. Java中读取文件
  7. Android开发环境的搭建之(二)Android Studio的安装
  8. 使用CSS3制图
  9. android mediaplayer
  10. hdu--1316--How Many Fibs?(java大数)
  11. Web开发框架推导
  12. [转]Ubuntu Linux 安装 .7z 解压和压缩文件
  13. 笔记:Jersey REST API 设计
  14. flask websocker
  15. HQL详解
  16. angular bootstrap timepicker TypeError: Cannot set property '$render' of undefined
  17. 学习笔记——xml的入门及解析
  18. spring 空指针报错,Could not create connection to database server.
  19. elasticsearch-权威指南笔记-基础部分
  20. POJ.1160.Post Office(DP 四边形不等式)

热门文章

  1. Cursor: Pin S Wait On X In The Top 5 Wait Events
  2. Python排序算法——冒泡排序
  3. vue router mode模式在webpack 打包上线问题
  4. 剖析height百分比和min-height百分比
  5. sql 书写 规范 优化
  6. JVM中的垃圾回收算法GC
  7. ABP mysql
  8. AirBnB春招笔试题
  9. 使用按钮触发element 时间事件 --时间戳
  10. Django admin组件使用