day4:数据结构list
1,一直输入用户名,输入Q退出,注意用户的输入别忘了加strip,和upper不区分大小写,list最后一位添加append
li = []
while 1:
name = input(">>>").strip()
if name.upper() == "Q":
break
else:
li.append(name)
print(li) 运行结果:
>>>lisa
>>>lucy
>>>jack
>>>mary
>>>q
['lisa', 'lucy', 'jack', 'mary']
2,在list的某个位置插入一项insert:
li.insert(2,'bob')
print(li)
#原来的字符串只有一个bob,那么会默认在最后位置再添加一个bob 运行结果:
>>>bob
>>>q
['bob']
['bob', 'bob']
3, 按照字符串每一位拆开来添加extend,永远按照数据类型的最小单位来extend,注意元祖只有一项的时候需要加逗号,不然还表示原来的数据类型,注意extend必须是可迭代的类型,int就不可以,可迭代的如list,str,dict,set,不可迭代的如int,bool:
li = ['lisa','mary']
li.extend(["lucy"])
print(li) li.extend(("lucy",))
print(type(("lucy",)))
print(li) li.extend(("lucy"))
print(type(("lucy")))
print(li) li.extend({"lucy"})
print(li) li.extend("lucy")
print(li) 运行结果:
['lisa', 'mary', 'lucy']
<class 'tuple'>
['lisa', 'mary', 'lucy', 'lucy']
<class 'str'>
['lisa', 'mary', 'lucy', 'lucy', 'l', 'u', 'c', 'y']
['lisa', 'mary', 'lucy', 'lucy', 'l', 'u', 'c', 'y', 'lucy']
['lisa', 'mary', 'lucy', 'lucy', 'l', 'u', 'c', 'y', 'lucy', 'l', 'u', 'c', 'y']
4,extend元祖类型的时候只能添加一个
li = ['lisa','mary']
li.extend(("lucy",))
# 注意元祖只会添加第一个
print(type(("lucy"," Jack","bob")))
print(li) li.extend({"gg","kk","hh"})
print(li) li.extend(["mm","oo","vv"])
print(li) 运行结果:
<class 'tuple'>
['lisa', 'mary', 'lucy']
['lisa', 'mary', 'lucy', 'gg', 'kk', 'hh']
['lisa', 'mary', 'lucy', 'gg', 'kk', 'hh', 'mm', 'oo', 'vv']
5,可变类型,不可变类型,可变类型是可以在原有数据的原有地址进行修改,不可变类型类型是不可以在原有地址进行修改。可变的类型:列表,集合,字典,不可变:字符串,数字,元祖
可迭代不可迭代,可哈希(不可变类型)不可哈希(可变类型)
6,删除一个数据pop,删除是有返回值的,返回值就是删除的那个元素,不指定元素位置,默认删除最后一个
li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
print(li.pop(3)) # index为3的元素
print(li.pop()) #不指定默认为最后一个 运行结果:
hh
vv
7,删除另外一个函数remove,这个删除成功返回None,必须指定删除的元素,而且删除的元素列表中不存在的话,程序会崩溃,所以比较的话,还是推荐pop函数
li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
print(li.remove("lisa"))
print(li) 运行结果:
None
['mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
print(li.remove("ooooooo"))
print(li) 运行结果:
Traceback (most recent call last):
File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/4.1_str list.py", line 54, in <module>
print(li.remove("ooooooo"))
ValueError: list.remove(x): x not in list
8,清空列表,clear函数 清空的结果是空列表
li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv'] li.clear()
print(li) 运行结果:
[]
9, 删除整个列表del函数,删除之后的结果是,列表不存在了,注意不是空列表,和clear区分
li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
del li
print(li) 运行结果:
File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/4.1_str list.py", line 59, in <module>
print(li)
NameError: name 'li' is not defined
10,del函数还可以按照切片来删除
li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
del li[2:]
print(li) 运行结果:
['lisa', 'mary'] li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
del li[:]
print(li) 运行结果:
[]
11,改变列表,直接赋值就可以
li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
li[2] = "qqqq"
print(li) 运行结果:
['lisa', 'mary', 'qqqq', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
12,也可以一下改变多个,按照切片改,注意指定数额和给的数额要一致
li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
li[0:4:2] = "qq"
print(li) 运行结果:
li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
li[0:4:2] = "qq"
print(li) li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
li[0:4:2] = "qq999"
print(li) 运行结果:
Traceback (most recent call last):
File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/4.1_str list.py", line 62, in <module>
li[0:4:2] = "qq999"
ValueError: attempt to assign sequence of size 5 to extended slice of size 2 li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
li[0:3] = "qq999"
print(li) 运行结果:
['q', 'q', '', '', '', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
13,查找的话for...in...
14,公共方法,查找某一项出现的次数count,计算列表长度len,查找某一项对应的索引index,注意index函数,如果查找项不再列表中会崩溃
15,排序sort,默认按照首字母对应的ASCII码值来排序
li = [1,2,3,9,11,4,5,6,7,8]
li.sort()
print(li) li.sort(reverse=True)
print(li) 运行结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 11]
[11, 9, 8, 7, 6, 5, 4, 3, 2, 1]
16,字符串翻转reverse函数
li = [1,2,3,9,11,4,5,6,7,8]
li.reverse()
print(li ) 运行结果:
[8, 7, 6, 5, 4, 11, 9, 3, 2, 1]
17,元祖,只读列表,可循环查询,可切片,儿子不能改,孙子可以改
tu = (1,2,3,"lisa",[1,2,3,'lucy'],'jack')
print(tu[3])
print(tu[0:2])
print("------------------")
for i in tu:
print(i) #这儿一开始错写成tu[i]了,注意 运行结果:
lisa
(1, 2)
------------------
1
2
3
lisa
[1, 2, 3, 'lucy']
jack
18,join函数,字符串以某种方式进行连接,列表转化为字符串 ,注意被join的元素必须全部由字符串组成,除了列表,元祖,set等也可以被join
s = "lisa"
s1 = s.join("-") #一开始写错了,别跟我学
s1 = "-".join(s)
print(s1)
运行结果:
l-i-s-a li = ['lisa', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
li2 ='~'.join(li)
print(li2)
运行结果:
lisa~mary~lucy~hh~kk~gg~mm~oo~vv li = [, 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
li2 ='~'.join(li)
print(li2) 运行结果:
Traceback (most recent call last):
File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/4.2_tuple.py", line , in <module>
li2 ='~'.join(li)
TypeError: sequence item : expected str instance, int found
19,range函数顾头不顾尾,可以截取部分例如for i in range(3,10),或者for i in range(10)
for i in range():
print(i)
for i in range(,):
print(i)
for i in range(,,-):
print(i)
for i in range(,,):
print(i)
# 这句话错在哪儿?你知道吗?
for i in range(,,-):
print(i)
20,判断是否是数字,字母
li = ['lis3a', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
print(li[].isalnum())# 是否数字和字母
print(li[].isdigit()) # 是否数字
print(li[].isalpha()) # 是否字母 print(li[].isalnum()) # 是否数字和字母
print(li[].isdigit()) # 是否数字
print(li[].isalpha()) # 是否字母 运行结果:
True
False
False
True
False
True
21,ASCII 英文8位,Unicode开始16位升级后32位,utf-8升级版本的Unicode,英文8位,欧洲16位,中文24位,GBK中国独有,中文16位,英文8位,所有的软件都有自己默认的编码方式可以修改,文件操作部分还会有详细总结,Python2可以通过参数指定Unicode是16位还是32位,但是Python3只可以是32位
import sys
print(sys.maxunicode)
#1114111代表32位,65535代表16位
运行结果:
22,计算2 + 3这种中间有空格的加法,输入后可以split之后不用strip函数去空格,直接转换成int就去掉了
23,统计一个长串字符串里面有多少位数字,可以循环然后用isdigit函数判断
day4:数据结构list的更多相关文章
- 学习数据结构Day4
链表 之前看过了动态数组,栈和队列,虽然我们把第一个叫做动态数组,但是,他们的底层实质上还是静态数组.靠 resize来实现动态数组.而链表是真正的数据结构 链表需要一个节点. 数据存储在链表中 相当 ...
- 帝都Day4(3)——还是数据结构
可并堆 左偏树中 dist[x]=dist[rs[x]]+1 合并的时候,把权志较大的根作为根节点,把这棵树右子树和另一棵树合并. 说明白点:(上图描述有点问题) 设x表示根权值较大的左偏树,y表示根 ...
- 帝都Day4(2)——数据结构
黄姓dalao is coming! 一.栈: 基本常识略. 例题:铁轨 模拟,O(n), Usaco2006 Nov 题目略 做法:单调栈(续命栈?) n//数量 a[]//奶牛 for(int i ...
- ZROI 暑期高端峰会 A班 Day4 树上数据结构
FBI Warning:本文含有大量人类的本质之一. 你经历过绝望吗? [ZJOI2007]捉迷藏 询问树上最远黑点对. 动态边分治可以比点分治少一个 \(\log\). bzoj3730 咕了. [ ...
- Spark菜鸟学习营Day4 单元测试程序的编写
Spark菜鸟学习营Day4 单元测试程序的编写 Spark相比于传统代码是比较难以调试的,单元测试的编写是非常必要的. Step0:需求分析 在测试案例编写前,需完成需求分析工作,明确程序所有的输入 ...
- Spark Tungsten揭秘 Day4 内存和CPU优化使用
Spark Tungsten揭秘 Day4 内存和CPU优化使用 今天聚焦于内存和CPU的优化使用,这是Spark2.0提供的关于执行时的非常大的优化部分. 对过去的代码研究,我们会发现,抽象的提高, ...
- Python基础篇-day4
本节目录: 1.字符编码 2.函数 2.1参数 2.2变量 2.3返回值 2.4递归 2.5 编程范式 2.6 高阶函数 *************************************** ...
- 清北Day4
版权声明:如需转载请标明出处,未得到本人许可请勿转载. 今天就可以看到传说中的 数据结构 嘿嘿嘿嘿 都有什么呢 链表 队列 栈 st表 hash 线段树 树链剖分 一.栈: 放出来这个看烂了的图 值得 ...
- GO语言的进阶之路-Golang高级数据结构定义
GO语言的进阶之路-Golang高级数据结构定义 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们之前学习过Golang的基本数据类型,字符串和byte,以及rune也有所了解, ...
随机推荐
- css中border-radius用法详解
border-radius:由浮点数字和单位标识符组成的长度值.border-top-left-radius --- 左上border-top-right-radius --- 右上border-bo ...
- asp.net C# int 类型在32/64位环境下取值范围无变化
最近在学习中突然想到,我在64位环境下,int取值范围是否有变化?为了检测这个结果,我做了以下这个测试:1.环境:win7旗舰版64位+vs2010 sp1(版本号:10.0.40219.1SP1Re ...
- C#-MVC开发微信应用(7)--在管理系统中同步微信用户分组信息
在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码.希望从一个更高的层次介绍微信的开发. 在 ...
- 第三部分:Android 应用程序接口指南---第二节:UI---第五章 设置(Settings)
第5章 设置(Settings) 应用程序通常包括允许用户修改应用程序的特性和行为的设置功能.例如,一些应用程序允许用户指定通知是否启用或指定多久使用云同步数据.如果你想要为你的应用程序提供设置,你应 ...
- iOS多个storyboard间跳转
Stroyboard 可以被看作一个管理View画面的集合.也就是说一个iOS专案裡面并没有限制只能有一个Storyboard.所以在你的APP专案中,你可以把功能相近的View放到同一个APP之中, ...
- [译]我们为何基于FreeBSD打造解决方案?
[译注]翻译这篇文章,主要是觉得老外在思考问题时,勇于打破固有的技术栈积累,尝试不同的选择,从而找到最合适自己的技术方案.得到真正的实惠. Synergy SKY提供多种软件解决方案,本文想讨论的是关 ...
- Android Things:撸起袖子来创建第一个Things工程
http://blog.csdn.net/p106786860/article/details/60161020 ——————————————————————————————————————————— ...
- Java知多少(86)文本框和文本区的输入输出
在GUI中,常用文本框和文本区实现数据的输入和输出.如果采用文本区输入,通常另设一个数据输入完成按钮.当数据输入结束时,点击这个按钮.事件处理程序利用getText()方法从文本区中读取字符串信息.对 ...
- Spring AOP 详解[转]
此前对于AOP的使用仅限于声明式事务,除此之外在实际开发中也没有遇到过与之相关的问题.最近项目中遇到了以下几点需求,仔细思考之后,觉得采用AOP 来解决.一方面是为了以更加灵活的方式来解决问题,另一方 ...
- MySQL视图小例子
场景: 某查询接口 查询sql语句已确定,用该sql语句去查 表 t_strategy_stock 中的数据,但是 表t_strategy_stock 的字段名称和 sql 语句中写死的名称不同. 需 ...