一.列表

1. 列表的创建:

数组: 存储同一数据类型的组合;
列表:可以存储不通类型的数据。
• 定义一个空列表
list = []
• 定义一个包含元素的列表,元素可以是任意类型,包括数值类型,
列表,字符串等均可。
# 定义一个包含元素的列表
l = [1, 2e+8, 2j+9, True, "hello"]
print(l2, type(l2))

2. # 列表里面存储列表

列表里面存储列表:
l2 = [[2,34,2],'hello',2,'linux',32]
print(l2,type(l2))

3. 列表的特性:

列表的特性:
索引, 切片, 重复, 连接, 成员操作符

索引:

l = [1, 2e+8, 2j+9,[1,3,2],True, "hello"]
print(l[0])       #打印第一个元素
print(l[-1])      #打印最后一个元素
print(l[3])       #打印第四个元素
嵌套列表的索引:
l3 = [[1,2,3,4], [5,6,7,8],1, 2e+8, 2j+9, True, "hello"]
print(l3[0][-1])
print(l3[-1][2])   # l3[-1] = "hello"    "hello"[2]

强制转换range(5)的返回值为列表 :

强制转换range(5)的返回值为列表 :
l4 = list(range(5))print(l4[:-1])
print(l4[1:])
print(l4[::-1])

重复:

重复:
l4 = list(range(5))
print(l4*4)

连接:

连接:
l3 = [[1,2,3,4], [5,6,7,8],1, 2e+8, 2j+9, True, "hello"]
l4 = list(range(5))
print(l3+l4)

成员操作符:

成员操作符:
l3 = [[1,2,3,4], [5,6,7,8],1, 2e+8, 2j+9, True, "hello"]
l4 = list(range(5))
print(1 in l4)
print(1 not in l4)

示例:

判断一个单词是否喜欢:
当单词都是大写并且没有两个连续相同的字母是输出喜欢,
否则输出不喜欢。
s = input("string:")
# 1. 单词每个字母都是大写字母
if s.isupper() and isinstance(s,str) and len(s)<100:# 单词没有连续相等的字母s_len = len(s)for index in range(s_len-1):if s[index] == s[index+1]:print('Dislikes')breakelse:print('Likes')
else:print('Dislikes')

示例:列表练习

假定有下面这样的列表:names = ['fentiao', 'fendai', 'fensi', 'apple']输出结果为:'I have fentiao, fendai, fensi and apple.'考察点:切片:字符串的join方法:
names = ['fentiao', 'fendai', 'fensi', 'apple']
print("I have " + ",".join(names[:-1]) + " and " + names[-1])

4. 列表的增加

languages = ['shell', 'c', 'python']# # append: 追加, 追加元素到列表的最后;
languages.append('java')
print(languages)# extend: 追加多个元素到列表中;
other = ['Go', 'perl', 'php']
languages.extend(other)
print(languages)# # # insert: 添加元素到指定索引的前面;
languages.insert(0, 'C++')
print(languages)

5. 列表的删除

names = ['fentiao','fendai','fensi','apple']
names.remove('fensi')                 #删除fensi元素
print(names)
names.pop(-1)                         #弹出最后一个元素
print(names)
查看删除的元素:
reversed_two_intem = names.pop(-2)    #将删除的元素赋给变量
print(reversed_two_intem)
del names                             #删除列表
print(names)                          #打印会报错
del names[0]                          #删除列表的第一个元素
print(names)

clear: 清空列表
l = ['shell','c','python','shell','c','c#']
l.clear()
print(l)          #打印出是一个空列表

示例:

# 1.删除列表中重复的所有元素
l = ['shell','c','python','shell','c','c#']
new_l = []
# 去掉重复的元素
for i in l:if i not in new_l and l.count(i) == 1:new_l.append(i)
print(new_l)# 2.删除重复的元素:仅删除重复的元素
for i in l:if i not in new_l:new_l.append(i)
print(new_l)

执行结果:

示例:

用户登陆系统:
1).已知多个用户名和密码分别保存在列表中;
2).判断用户名是否存在,如果登陆的用户名不存在,则报错;如果用户存在,则判断密码是否正确;如果正确,输出登陆成功;如果不正确,输出登陆失败;
3).为防止黑客暴力破解密码,登陆最多3次机会;
names = ['root','student']        #用户列表
passwds = ['redhat','student']     #密码列表
for trycount in range(3):name = input("username:")     #用户输入passwd = input("password:")#判断用户是否存在?if name in names:#判断该用户的密码是否正确:#1).先找出该用户在列表中的索引#2).拿出该用户对应的密码index = names.index(name)    db_pass = passwds[index]if db_pass == passwd:print("登陆成功!")breakelse:print("用户密码错误!")else:print("%s用户不存在" %(name))
else:print("登陆超过三次机会!")

执行结果:

6. 修改列表元素

languages = ['shell', 'c', 'python', 'shell2']1.通过索引修改列表元素;
languages[0] = 'java'
print(languages)2.通过切片修改列表元素;
languages[:2] = ['perl', 'matlab']
print(languages)

7.查看

languages = ['shell', 'c', 'python', 'shell', 'a', 'B', 'c']
languages.count('shell')
print(languages.index('shell',1,4))

8.复制

# 该方式不能实现复制, 因为两个变量指向同一块内存空间;
languages = ['shell', 'c', 'python', 'shell', 'a', 'B', 'c']
languages1 = languages
languages.append('PHP')
print(id(languages), id(languages1))
print(languages)
print(languages1)

第一种实现列表的复制;
languages = ['shell', 'c', 'python', 'shell', 'a', 'B', 'c','e']
languages1 = languages.copy()
print(id(languages), id(languages1))  #指向不同的空间
languages.append('Go')     #langusges更改langusges1不会更改
print(languages1)

第2种实现列表的复制;
languages = ['shell', 'c', 'python', 'shell', 'a', 'B', 'c','e']
languages1 = languages[:]
print(id(languages), id(languages1))
languages.append('Go')
print(languages1)

9.排序与反转

对于字母的排序:
1.字母按照ASCII码从小到大排序;
languages = ['shell', 'c', 'python', 'shell', 'a', 'B', 'c','e']
languages.sort()
print(languages)2.字母按照ASCII码从大到小排序;
languages.sort(reverse=True)
print(languages)

反转:
# 直接反转, 类似l[::-1]
languages = ['shell', 'c', 'python', 'shell', 'a', 'B', 'c','e']
languages.reverse()
print(languages)

10.通过列表构建queue队列:先进先出

queue队列工作原理:先进先出

queue队列练习:先进先出
queue = []
max_count = 10
menu = """队列元素1).入队2).出队3).队头4).队尾5).队列长度6).队列元素7).队列是否为空8).队列是否已满:full
请输入你的选择:"""
choice = input(menu)
if choice == '1':print("入队操作".center(30,'*'))if len(queue) < 10:item = input("入队元素:")queue.append(item)print("%s入队成功!" %(item))else:print("队列已满!")
elif choice == '2':if not queue:print("队列为空")else:item = queue.pop(0)print("%s出对成功,队列为:%s" %(item,queue))
elif choice == '3':if len(queue) == 0:print("队列为空!")else:print("队头为:%s" %(queue[0]))
elif choice == '4':if len(queue) == 0:print("队列为空!")else:print("队尾为:%s" %(queue[:-1]))
elif choice == '5':print("队列长度为:%s" %(len(queue)))
elif choice == '6':for i in queue:print(i,end=',')
else:print("错误的选择:%s" %(choice))

11. 通过列表构建栈的数据结构:

栈的工作原理: 先进后出

stack = [1,3,4,]
max_count = 10
menu = """栈元素1).入栈2).出栈3).栈元素4).栈顶元素5).栈长度6).栈是否为空
请输入你的选择:"""
choice = input(menu)
if choice == '1':print("入栈操作".center(30,'*'))if len(stack) < 10:item = input("入栈元素:")stack.append(item)print("%s入栈成功!" %(item))else:print("栈已满!")
if choice == '2':if not stack:print("栈为空!")else:item = stack.pop(0)print("%s出栈成功,栈为:%s" %(item,stack))
if choice == '3':if len(stack) == 0:print("栈为空!")else:for i in stack:print(i,end=',')
if choice == '4':if len(stack) == 0:print("栈为空!")else:print("栈顶元素为:%s" %(stack[0]))
if choice == '5':print("栈长度为:%s" %(len(stack)))
if choice == '6':if len(stack) == 0:print("栈为空!")else:print("栈不为空!")执行结果:

12. is和==的区别

id: 在内存中存储的位置
type: 变量的;类型
value: 值是否相等;
== 判断: type, value
is: type, value, id
结论:
  is表示的是对象标识符;表示两个变量的值是否在同一块内存空间;
  ==表示的是值是否相等;总结: is返回值为True, ==返回一定是True;

13. 深拷贝与浅拷贝

>>> import copy      #导入模块
深拷贝:
>>> l = [[[2,35,],3,4],3,65,1]
>>> la = copy.deepcopy(l)
>>> id(l[0][0]),id(la[0][0])     #指向不同的内存空间
(140717579268552, 140717588844616)
浅拷贝:
>>> lb = copy.copy(l)
>>> id(l[0][0]),id(lb[0][0])     #指向相同的内存空间
(140717579268552, 140717579268552)

14. 可变数据类型和不可变数据类型

可变数据类型:list是可变数据类型;<有增删改查>列表
不可变数据类型:数值类型, 字符串, bool

二.集合

1.集合的特性:

集合的特性:不支持:(索引, 切片, 重复, 连接,) 因为无序;
支持:成员操作符 for循环。
s = {2,5,8,20}
print(1 in s)for i  in s:print(i, end=',')
集合是无序的数据类型: 添加元素的顺序和存储的顺序无关;
添加:
s = {2,5,8,20}
s.add(4)
print(s)

2.集合的增删改查

s = {1,2,'d', 3,'c', 'f'}# 增加单个元素;
s.add(4)
print(s)# 增加多个元素;
s.update({4, 5, 6})
print(s)# 删除指定元素
s.remove(1)
print(s)# 随机删除集合元素
s.pop()
print(s)
# 清空集合
s.clear()
print(s)

3. 集合操作

s1 = {1, 2, 3}
s2 = {1, 2, 4}1.交集
print(s1.intersection(s2))
print(s1 & s2)             2.并集
print(s1.union(s2))
print(s1 | s2)3.差集
print(s1.difference(s2))
print(s2.difference(s1))print(s1 - s2)
print(s2 - s1)4.对等差分:将两个集合的不同的部分拿出来放一起。
print(s1.symmetric_difference(s2))
print(s1^s2)s3 = {1,2}
s4 = {1,2,3}5.s3是s4的子集?
print(s3.issubset(s4))6.s3是s4的父集?
print(s3.issuperset(s4))7.s1和s2没有交集么? 如果没有交集True,否则返回False;
print(s3.isdisjoint(s2))

示例1:

1. 共同好友;你的好友A,B,C 他的好友C,B,D, 求共同好友:me = {'A','B','C'}
ta = {'C','B','D'}
gongtonghaoyou = me & ta
print(gongtonghaoyou)2.   微信群提醒:小明与群里其他人都不是微信朋友关系
#不是朋友关系与任何人都没有交集
执行结果:共同好友为

示例2:

2. 权限判断:有一个API,要求同时具备A,B,C权限才能访问,目前用户权限为B,C,D,判断该用
户能否访问该API;# 实质看用户权限是否为ABC的父集:API = {'A','B','C'}
yonghu = {'B','C','D'}
print(yonghu.issuperset(API))
#用户权限是否是API权限的父集,数出True,可以访问,False不能访问。                    

示例3:

 集合练习:
1.随机产生2组各个数字的列表,每组10个数字,如下要求:
每个数字取值范围[10,20]
#生成随机数:
import random   #导入模块(生成随机数)
num1 = []
num2 = []
n = 10
for i in range(n):item1 = random.randint(10,20)item2 = random.randint(10,20)num1.append(item1)num2.append(item2)
print(num1)
print(num2)
2.统计20个数字中,一共有多少个不同的数字?   #求并集print(len(set(num1) | set(num2)))
3.2组中,不重复的数字有几个?分别是什么?   #求对等差分print(len(set(num1)^set(num2)))    #个数
print(set(num1)^set(num2))          #分别是
4.2组中,重复的数字有几个?分别是什么?    #求交集
print(len(set(num1)&set(num2)))
print(set(num1)&set(num2))

执行结果:

示例4:

 一个总任务列表,储存所有任务,一个完成的任务列表。找出未完成的任务; # 实质上是求差集的。
all_task = ['task1', 'task2', 'task3']
complete = ['task1']
print("未完成任务:%s" %(set(all_task) - set(complete)))

执行结果:

示例5:

# 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,
# 他先用计算机生成了N个1到1000之间的随机整数(N≤1000), N是用户输入的,对于
# 其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应
# 着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺
# 序去找同学做调查。请你协助明明完成“去重”与“排序”的工作;# 在1-1000之间随机生成10个数字# 导入随机数模块
import random
# 用户输入的数:
N = int(input('num:'))
# 创建空集合
s = set()
# for循环,生成随机数
for i in range(N):     item = random.randint(1,1000)s.add(item)
# 对于集合进行排序
print(sorted(s))

去重排序结果:

linux系统python中的列表 || python中的集合相关推荐

  1. kettle怎么复制资源库的job_#linux系统下调度数据库类型资源库中的kettle job

    // linux系统下调度数据库类型资源库中的kettle job - 简书 http://www.jianshu.com/p/bc57ee193ea3 进入linux系统,切换至kettle所属用户 ...

  2. linux系统数据库类型,linux系统下调度数据库类型资源库中的kettle job

    已经存在kettle的一个资源库enfo,在目录/works/wxj下面有一个job (testmailsuccess.kjb)如何实现手工在kettle外部执行此job和让系统每天定时的调用此job ...

  3. linux下去ldap数据,Linux系统下要如何修改LDAP中的数据

    在天下网吧-网吧系统-网吧天下栏目上一篇文章中,我们看到了:希望对各位网吧网管或者网吧维护,做网吧系统的各位大大有用,那么今天我们一起来看下:Linux系统下要如何修改LDAP中的数据 在之前的文章中 ...

  4. Day2 - Python基础2 列表、字典、集合 --转自金角大王

    Day2 - Python基础2 列表.字典.集合 --转自金角大王 Posted on 2018-01-24 13:23 Byd_lei 阅读(41) 评论(0)  编辑 收藏 本节内容 列表.元组 ...

  5. python 下标 遍历列表_python中的数据结构与算法(1):列表、元组与字符串

    列表是 python 中最常用.最重要的数据结构之一. 一般来说,我们用列表来管理一组数据对象,这些对象可能是同一类型,也可能是不同类型.列表不仅记录了这些数据对象,而且也记录了它们之间的一种顺序关系 ...

  6. python怎么调用列表_Python中列表的使用

    python中的列表与java中的数组非常类似,但使用方法比java中数组简单很多,python中的数据类型不需要显示声明,但在使用时必须赋值,列表元素下标从0开始 初始化列表(初始化一个包含五个元素 ...

  7. python怎么读取列表-python如何读取列表中的参数

    问 题 { "errno": "0", "data": { "hi_info": { "login_ip&qu ...

  8. Linux系统基础小白学习(更新中)

    Linux系统小白学习 Linux基础介绍安装 1.1 Unix与Linux 背景 Unix&Linux区别与联系 1.2 Linux介绍 特点 组成 Linux文件系统 内核版本 硬件 文件 ...

  9. linux 显示目录文件数,如何在Linux系统上显示当前及子目录中的文件数量

    在本指南中,我们将介绍如何在 Linux 系统上显示当前工作目录或任何目录及其子目录中的文件数量. 我们将使用 find 命令,它用于搜索目录层次结构中的文件,以及 wc 命令,它会打印每个文件或来自 ...

  10. 实现linux系统在VHD、Vdi虚拟磁盘中运行在实体机里

    之前因为工作的原因离不开windows系统在做了一个VHD版的win7,确实在工作中方便不少,现在用linux越来越顺手,看到Ventoy的官网有 Linux vDisk 文件启动插件 , 按照Ven ...

最新文章

  1. java getattribute intvalue_Java NodeTree.getAttributeI方法代码示例
  2. mysql 5.3 build4.234_mysql版本3.23跟4.1区别
  3. 使用web3部署一个比较复杂的智能合约
  4. C语言中Static和Const关键字的的作用
  5. 如何加入IETF 如何发表自己的RFC
  6. 史上最全PHP正则表达式实例汇总
  7. Drools 7.4.1.Final参考手册(六) 用户手册
  8. Redis文档阅读笔记-Pub/Sub官方解析
  9. 【十一】Jmeter 函数助手实战:__time 时间戳函数
  10. 【QT】QT从零入门教程(四):菜单栏、工具栏、状态栏
  11. 《Effective Java 3rd》读书笔记——泛型
  12. Charle分析实战
  13. java 8 stream 对集合的简单操作
  14. Linux下安装maven3.6.2遇到的问题
  15. Gateway网关简介及使用
  16. mysql CAPI与C++的交互
  17. 数据科学与大数据技术专业 —— 云计算●虚拟化 课程 期末复习卷及其简答(2)
  18. 歇逼了兄弟,心态崩了
  19. 浏览器添加划词翻译插件
  20. css初级之高级语法

热门文章

  1. 一款开源好用的车辆管理系统源码,基于SSH框架和SaaS模式
  2. python提取某一列数据,Python numpy 提取矩阵的某一行或某一列的实例
  3. 三角肌前束(02):哑铃交替前举
  4. 程序员专属段子集锦 10/10
  5. wifi共享大师开启失败发射功能失败
  6. 领域应用 | 知识结构化在阿里小蜜中的应用
  7. 竞价域名是干什么的?为什么要进行域名竞价?
  8. 武汉为什么进不了互联网第一梯队?
  9. 出方向链路负载均衡技术(原理部分)
  10. 教你 用c语言输出乘法口诀表 一giao我嘞gaiogiao