重走py 之路 ——列表(一)
前言
因为最近公司有python项目维护,所以把python的基础入门的书整理一遍,因为有些忘记了,同时在看<<python编程>>这本书的时候觉得对有基础的有很多的赘余,打算直接整理不同之处。
因为python 有2版本和3版本,如果新学的话,建议直接3版本,2版本已经不会再升级了,也就是不再维护了。
同时也规劝一句,如果是用python专门去做网站的话,那么是不建议的,因为这不是python的强项。同时也不要误以为python动态语言性能效率就不适合做一些服务,因为有些服务性能不是一个瓶颈,可能问题在网络一头等。
总之一句话,py发展这么快,一个是因为社区,同时也是因为python这门语言的设计上,那么就先来看下列表吧,因为太常用了。噢,如果你还不会装python,那么直接百度吧,建议一开始直接exe安装。
正文
在此之前呢,先介绍一个string类型,因为strign类型的介绍很简短,那么就直接放到这一小节中。
name="jack rose";
print(name.title())
那么它会输出,Jack Rose,这个title就是用来首字母大写的。
看下c# 的首字母大写:Strings.StrConv("str.str.str str_str", VbStrConv.ProperCase, System.Globalization.CultureInfo.CurrentCulture.LCID);
是的,python就是这么方便,操作数据的方便,后面你能更加感受到。
name="jack rose";
str1=name+1+"2";
print(name.title())
但是依然有值得注意的地方,在其他高级语言如python和java中是没得问题的,但是在py中是存在问题的。
Traceback (most recent call last):
File "index.py", line 2, in <module>
str1=name+1+"2";
TypeError: cannot concatenate 'str' and 'int' objects
为什么不会自动转换呢?他们两个对象不一样,那么就会失败,为啥会这样呢?这个是涉及问题,来看下int 如果转换为str的。
a=str(1)
print(a)
和其他语言不一样,其他语言有tostring,那么转换的时候就会调用tostring,而py中,是一个str函数,设计的不同意味着他们的写法不同。
看下其他几个简单的。
name=" jack rose ";
print(name.lstrip())
lstrip 是去除左边的空格,然后rstrip 去除右边的空格。在此说明的不是说lstrip这个函数,而是想说明,py有很多函数分为左右,如果你发现一个函数有从左查询,那么一定有一个从右查询,这就是为啥py这么方便,因为提供了太多函数。
是的,它的语义化,让你不需要去寻找哪个函数干什么的,从英文中就能推断出。string 到此就结束了,那么看到下本章的主要,列表。
增删改查
首先python没有数组,一门动态语言要啥数组呢?来看看其操作方便的列表。
name=" jack rose ";
list=['a','b','c']
print(list);
输出:['a','b','c'],好吧这里可能有人疑问这为啥不是数组呢?你可以理解为这是一种语法。
为了证明其不是一个string数组:
list=['a','b','c']
list.append(1);
print(list);
输出:['a', 'b', 'c', 1]
好的上述你看到了添加,那么看下插入吧。
list=['a','b','c']
list.append(1);
list.insert(0,1);
print(list);
输出:[1, 'a', 'b', 'c', 1]
它的规则也很简单,就是在当前位置写入,其他的位置往后移动。
在此说明一点,我们可以像索引一样去访问列表。
list=['a','b','c']
print(list[0]);
输出a。除了这样,我们还可以list[-1],将会返回'c',而不是异常,这让我们的计算方便很多,我们不需要去计算最后一个位置的位置。
看下删除:
list=['a','b','c']
del list[0]
print(list);
输出:['b', 'c']
在这里说明一下,不仅是列表这样删除,其他的类型也是这样删除的。
a='a';
del a;
print(a);
是的,这样就没有a了。
Traceback (most recent call last):
File "index.py", line 5, in <module>
print(a);
NameError: name 'a' is not defined
这样说吧,a并没有删除,只是删除了a和'a'的联系,就想指针指向一样。
指定位置弹出:
list=['a','b','c']
list.pop();
print(list);
返回:[a,b]
那么默认是弹出最后一个位置,如果指定位置的话,比如说第一个,那么pop(0)即可。
那么如何根据值来删除呢?
list=['a','b','c','a']
list.remove('a');
print(list);
输出值:['b', 'c', 'a']
可以看到值删除了一个,那么如果全部删除呢?这个后面系列将会介绍到,也许你现在可以想象遍历一下。对了有一个函数count,list.count('a')会计算a出现的次数,而正在的计算list大小,是通过len,这个函数,如len(list)
在我们编程中排序时少不了的,有临时排序还有永久排序。临时排序就是返回一个新的list,永久就是直接修改list,他们分别对应的函数是:
list=['b','c','d','a']
print(sorted(list));
print(list);
list.sort();
print(list);
输出:
['a', 'b', 'c', 'd']
['b', 'c', 'd', 'a']
['a', 'b', 'c', 'd']
在此你可以知道sorted 是临时排序,sort 是永久排序,值得总结的是:一般来说自身函数的调用是永久操作自己,而外部会创造另一个对象。
再举另外一个例子:reverse,list.reverse是操作自己,而不是返回一个新对象,reversed(list);返回一个新对象。
循环
list=['b','c','d','a']
for item in list:
print(item)
循环非常的简单,但是值得注意的是list后面需要又要给:,这是需要注意的语法。
同样需要介绍另外一个东西,pass.
假如我们for语句什么都不做,好的,不要纠结为啥什么都不做。
那么可以这样:
list=['b','c','d','a']
for item in list:
pass
如果没有pass,那么将会报错,pass 是占位语句。
其他的功能函数
前面介绍到,py操作数据是真的方便,那么如果要生成一些数据是否同样方便?
for item in range(0,10):
print(item);
输出:
0
1
2
3
4
5
6
7
8
9
这样就生成了0-9。前开后闭类型的。
同样你可以跳过一些:
for item in range(0,10,2):
print(item);
0
2
4
6
8
同样可以进行一些统计:
list=range(0,10,2);
print(min(list));
print(max(list));
print(sum(list));
得到0,8,20。
给各位介绍一个神器的语法,比如你想要上面的list增加1,然后赋值给一个新的list,那么怎么写呢?
list=range(0,10,2);
list2=[item++1 for item in list]
print(list2);
这样就是:[1, 3, 5, 7, 9]
这里我写的是item++1,这和我们c# item++一样,语法不通而已。
那么如果我要复制一个list怎么办呢?
list=range(0,10,2);
list2=list[:]
print(list2);
这样就行。[:]是否只能用来copy呢?当然不是,它是片切的一种语法。
list=range(0,10,2);
print(list);
list2=list[1:2]
print(list2);
输出:
[0, 2, 4, 6, 8]
[2]
获取从1开始,到2介绍,且不包含2。
还是前开后闭原则。
除了可以填写正数,你还可以填写负数:
list=range(0,10,2);
print(list);
list2=list[-1:]
print(list2);
相信也猜到了,没错就是获取最后一个。
元组
如果你希望你定下的一些数据被修改,那么你可以使用元组。
tuple=(100,200)
这样就创建了一个元组,是的,把一些数据放在括号中。
元组一般用于查询,他的函数也非常少。
结
下一节 基本操作。
重走py 之路 ——列表(一)的更多相关文章
- 【重走Android之路】【番外篇】关于==和equals
[重走Android之路][番外篇]关于==和equals 在实际的编程当中,经常会使用==和equals来判断变量是否相同.但是这两种比较方式也常常让人搞得云里雾里摸不着头脑.下面是我个人做的总 ...
- 【重走Android之路】【番外篇】有关于null的一些知识点
[重走Android之路][番外篇]有关于null的一些知识点 1.首先,到底什么是null? null是Java中的一个关键字,用于表示一个空对象引用,但其本身并不是任何类型也不是属于任何对象. ...
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
- 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder
[重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder 1.String String是Java中的一个final ...
- 【重走Android之路】【Java面向对象基础(一)】数据类型与运算符
[重走Android之路][基础篇(一)][Java面向对象基础]数据类型与运算符 1.数据类型介绍 在Java中,数据类型分为两种:基本数据类型和引用类型. 基本数据类型共8种,见下表: 基本数 ...
- 【重走Android之路】【路线篇(二)】知识点归纳
[重走Android之路][路线篇(二)]知识点归纳 参考:http://blog.csdn.net/xujing81/article/details/7313507 第一阶段:Java面向对 ...
- 【重走Android之路】【开篇】序
[重走Android之路][开篇] [序] 本人Nodin,偶尔也叫MoNodin,朋友们都喜欢叫我丁,还有个笔名叫陌上幽人,文艺时叫恋风,发奋时叫不肯腐烂的土壤...也许你觉得我 ...
- 【重走Android之路】【路线篇(一)】路线图
总结归纳了J2SE和Android的知识点,自己制订了一套详细的路线图,其中肯定有考虑不全和不合适的地方,欢迎各位大牛批评指正. 详细路线图如下:
- [项目实施失败讨论Case] “凭心而论,在这家公司很敬业的工作了3年多,老板最后给我下的评语,大家都看看吧,千万别和我走同一条路!”(摘自csdn)
[Case] “凭心而论,在这家公司很敬业的工作了3年多,老板最后给我下的评语,大家都看看吧,千万别和我走同一条路!”(摘自csdn) 原文:http://community.csdn.net/Exp ...
- 走正确的路 - IT业没有护城河 - 机器翻译新锐Deepl
最近发生了一件很令我震惊的事情:新的一个机器翻译网站出现了 - www.deepl.com (DeepL 或许会成为你今年首选的翻译工具) 机器翻译早就是红海市场了.我就不从1954年IBM发布俄翻英 ...
随机推荐
- Java 对象数组题目 + 改进(封装方法)
1 /** 2 * 3 * @Description 4 * @author Bytezero·zhenglei! Email:420498246@qq.com 5 * @version 6 * @d ...
- vue3,实战项目随心笔记
本项目模仿bibi 网站,主要是做一个pc和手机端的应用案例,主要涉及支付,三方登陆,css原子,妹子ui,路由缓存,组件封装,tailwindcss,vueuse 等常见企业级术应用, 由于本项目是 ...
- 通达信金融终端解锁Level-2功能 续(202307)
外挂方式,不修改原程序.解锁Level-2 逐笔分析.对"非法访问"Say NO! LEVEL2逐笔分析破解后,仍然被防调试. 竞价分析,实时资金示例. 逆向通达信Level-2 ...
- Java课堂
import java.awt.*; import java.awt.event.*; import java.util.*; public class Main{ public static dou ...
- 【STM32 F4 HAL】记录一个比较玄学的pwm输出问题
事情是这样的: 最近在做平衡小车,硬件电路都搭好了,试着驱动了下有刷电机,发现两个都动不了,就以为是电路的问题,后面又重新检查了一遍,问题就进化成了只有一个电机在转. 因为之前看过一个学长的博客说可能 ...
- HeaderedContentControl实现左右对称
在我们使用TextBlock却想给前面添加固定字段的时候,发现TextBlock没有Header属性, 这个时候我们可以用到HeaderedContentControl 然而,默认情况下Headere ...
- 记录--什么时候会阻塞HTML文档渲染过程?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 HTML页面加载过程会发生什么?因为浏览器网络拉取资源是多线程的,但是dom树的操作都是在一个线程中的,所以网页资源的解析.js加载.do ...
- 重新记录一下ArcGisEngine安装的过程
前言 好久不用Arcgis,突然发现想用时,有点不会安装了,所以这里记录一下安装过程. 下载Arcgis 首先,下载一个arcgis版本,我这里下的是10.1. 推荐[ gis思维(公众号)],[麻辣 ...
- 记一次 .NET某游戏后端API服务 CPU爆高分析
一:背景 1. 讲故事 前几天有位朋友找到我,说他们的API服务程序跑着跑着CPU满了降不下去,让我帮忙看下怎么回事,现在貌似民间只有我一个人专注dump分析,还是申明一下我dump分析是免费的,如果 ...
- Moe RE - 【bugku】
发现好像没人写wp,虽然很简单但是写一个.... 题目 分析 下载文件打开,习惯首先丢到Exeinfo PE里看看有没有壳 没有壳的样子 那放心丢到IDA(64-bit)里面 一进去就看到很有嫌疑的字 ...