序列,目前看来很基础,东西比较多,难度开始加大。。。加油吧,骚年

Python之序列

1.数据结构:序列、容器(序列:索引、映射:键)、集合
2.列表、元组、字符串、Unicode字符串、buffer对象、xrange对象
3.列表可以修改、元组不可修改(一般情况下列表都可以替代元组),并且列表有许多专门方法(下面会说明)

序列

#定义一个【名字、年龄】的库?datebase
maomao=['maomao',21]
chouchou=['chouchou',22]
xiangxiang=['xiangxiang',23]
benben=['benben',24]
database=[maomao,chouchou,xiangxiang,benben]
print database
------下面是结果
[['maomao', 21], ['chouchou', 22], ['xiangxiang', 23], ['benben', 24]]

通用序列的操作:
索引、分片、加、乘、检查都元素是否属于序列成员、
计算序列长度、最大最小值、迭代(依次对序列中的每个元素重复执行X动作)

索引:
序列中的所有元素都是有编号的-----从0 开始递增。>>> greeting = 'maomao'

>>> greeting[0]
'c'
>>> greeting[2]
'o'

使用负数索引时,python 会从右边,也就是从最后1个元素开始计数。最后1个元素的位置编号是-1

>>> greeting = 'maomao'
>>> greeting[-1]
'o'
>>> greeting[-2]
'a'

如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作
例如,假设只对用户输入年份的第4个数字感兴趣,那么,可以进行如下操作:

fourth = raw_input('year:')[3]
print fourth #以1-31的数字作为结尾的列表
endings = ['st','nd','rd']+ 17*['th']\
+['st','nd','rd']+ 7*['th']\
+['st']
#嗯,总的来说,目前对这一段代码,对目前的小白我内心还是崩溃的。。

#根据给定的年月日以数字形式打印出日期
#定义months,是一个序列
months = [
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
] #以1-31的数字作为结尾的列表
#['st','nd','rd']表示1/2/3日分别以'st','nd','rd'结束
#17*['th']表示每月的第四日开始-第20日,均以'th'结束,为17个
#['st','nd','rd']+ 7*['th']+['st'],就好理解了。。
#每一行最后的\ 是用来换行的
endings = ['st','nd','rd']+ 17*['th']\
+['st','nd','rd']+ 7*['th']\
+['st'] #python2中,要用raw_input语法来获取用户输入值,这玩意获取完大约是‘xx’--字符串类型?i am not sure??
year =raw_input('year:')
month =raw_input('month(1-12):')
day =raw_input('day(1-31)') #然后把获取到的用户输入的数值转换成int类型
month_number = int(month)
day_number = int(day) #将月份和天数减1,以获得正确的索引,索引值是从0开始的
month_name = months[month_number-1]
ordinal = day + endings[day_number - 1] print month_name + ' ,' + ordinal + ' ,' + year
-----------------------------------------------
输入:
>>>
year:2017
month(1-12):8
day(1-31)3
输出:
August ,3rd ,2017

------------------------------------
(╥╯^╰╥)无奈呀~~加油吧,很快就能看懂了

-----------------华丽的分界线-------------

分片:类似java中的截取子串
(1)基础分片
格式:变量[x:y]---第x个索引开始,第y-1个索引结束,分片通过冒号相隔的两个索引来实现

>>> tag = '<a href="http://www.python.org">Python web site</a>'
>>> tag[9:30] # 取第9个到第30个之间的字符
'http://www.python.org'
>>> tag[32:-4] #取第32到第-4(倒着数第4个字符)
'Python web site'
>>>
>>> numbers = [0,1,2,3,4,5,6,7,8,9]
>>> numbers[7:-1] # 从第7个数到 倒数第一个数
[7, 8] #显然这样不可行
>>> numbers[7:10] #从第7个数到第10个数
[7, 8, 9] #这样可行,索引10指向的是第11个元素。
>>> numbers[7:] # 可以置空最后一个索引解决
[7, 8, 9]
>>> numbers[:3]
[0, 1, 2]
>>> numbers[:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
url = raw_input('Please enter the URL:')
domain = url[11:-4] print "Domain name:" + domain
------------------------------------------
输入:
>>>
Please enter the URL:http://fnng.cngblogs.com
输出:
Domain name:.cngblogs

(2)进阶分片
分片可以正分片,也可以负分片
正分片:头到尾
格式:变量[x:y:z] 要求x<y,且z>0
表示第x个索引开始,第y-1个索引结束,并以z-1为分片步数---第x个索引开始,第y-1个索引结束,并以z-1为分片步数(即:每z个字符取一个)
负分片:尾到头
格式:变量[x:y:z] 要求x>y,且z<0
表示第x个索引开始,第y-1个索引结束,并以z-1为分片步数---第x个索引开始,第y-1个索引结束,并以z-1为分片步数(即:每z个字符取一个)
该方法实现序列的倒输出
当x/y没有指定固定值时,如步数为正,则自左向右按步数取值
如步数为负,则自右向左按步数取值

正分片:
numbers = [0,1,2,3,4,5,6,7,8,9]
print numbers[0:1] #[0]
print numbers[:] #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print numbers[0:] #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print numbers[:10] #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print numbers[3:7] #[3, 4, 5, 6]
print numbers[0:10:2] #[0, 2, 4, 6, 8]
print numbers[3:6:3] #[3]
负分片
print numbers[::4] #[0, 4, 8]
print numbers[8:3:-1] #[8, 7, 6, 5, 4]
print numbers[10:0:-2] #[9, 7, 5, 3, 1]
print numbers[::-2] #[9, 7, 5, 3, 1]
print numbers[5::-2] #[5, 3, 1]
print numbers[:5:-2] #[9, 7]

-----------------华丽的分界线-------------

序列相加:
通过使用加号可以进行序列的连接操作:+
列表和字符串是无法连接接在一起的,尽管它他们都是序列。简单来说,两种相同类型的序列才能进行连接操作。

>>> 'hello.'+'world!'
'hello.world!' >>> [1,2,3]+[4,5,6]
[1,2,3,4,5,6] >>> [1,2,3] + 'world!'
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
[1,2,3] + 'world!'
TypeError: can only concatenate list (not "str") to list

乘法:
序列*次数,生成新的序列,原序列执行次数次

print 'python'*5 #pythonpythonpythonpythonpython
print [42]*5 #[42, 42, 42, 42, 42]
print [42,32]*5 #[42, 32, 42, 32, 42, 32, 42, 32, 42, 32]

如果想创建一个占用十个元素空间,却不包括任何有用的内容的列表,可以用None

print []*5 #[] 为空序列
print [0]*5 #[0, 0, 0, 0, 0] 为没有任何意义的序列
print [None]*5 #[None, None, None, None, None] 为有None站位符的序列

---神一样的盒子

# 以正确的宽度在居中的“盒子”内打印一个句子
sentence = raw_input("Sentence : ") screen_width = 80
text_width = len(sentence)
box_width = text_width + 6
left_margin = (screen_width - box_width) //2 print
print ' ' * left_margin + '+' + '-' * (box_width - 2)+ '+'
print ' ' * left_margin + '| ' + ' ' * text_width + ' |'
print ' ' * left_margin + '| ' + sentence + ' |'
print ' ' * left_margin + '| ' + ' ' * text_width + ' |'
print ' ' * left_margin + '+' + '-' * (box_width - 2)+ '+'

-----------------------------------

想看输入结果不。。。嗯,自己抄代码去。。。

绝对不会承认是偶copy不出效果来了。(⊙▽⊙)

-----------------华丽的分界线-------------
成员资格:

为了检查一个值是否在序列中,可以使用in 运算符。该运算符和之前已经讨论过的(例如 + , * 运算符)有一点不同。
这个运算符检查某个条件为真或假的(True or False )。

>>> permissions = 'rw' #可用于检查文件处理权限
>>> 'w' in permissions
True
>>> 'y' in permissions
False
>>> users = ['zhangsan', 'lisi','wangwu'] #可用于检查用户是否在列表中
>>> raw_input('Enter your user name: ') in users
Enter your user name: lisi
True
>>> subject ='$$$ Get rich now!!! $$$' #可用于垃圾邮件的过滤器一部分
>>> '$$$' in subject

-----------------华丽的分界线-------------

长度、最值
函数:
len() 返回序列中所包含元素的数量。
min() 返回序列中最小的元素。
max() 返回序列中最大元素。

#开始用eclipse写代码,与ubantu的交互设计不一致
-----输入
number = [100,23,233,455]
print len(number) #获取长度
print min(number) #最小值
print max(number) #最大值 print max(2,3) #最大值
print min(2,3,5,3,6,7,82,) #最小值 ------输出
4
23
455 3
2

--------------------------------分界线---------------------------

列表的函数方法们
列表是可变的,所有就有各种增删改查的方法
list() 用于将所有数据类型序列拆分成列表
join(somelist) 用于将列表转换成字符串

----元素赋值
----元素删除
----分片赋值
----列表方法
上述四方法并不都真正的改变列表

---元素赋值方法

方法一:定义列表是赋值,之前已经讲过,如
listA = [1,3,5,7,9]
方法二:利用索引,重新对列表重点元素进行赋值
listB = [1,1,1]
listB[1]=2 #注意,利用索引进行赋值时,不能超过该序列的索引长度,否则会索引越界
print listB #[1,2,1]

---元素删除方法:del():用于删除列表、字典、及其他元素。此处暂只说明列表元素的说明

#del():

name = ['maomao','chouchou','guodong','benben']
del name[0]
print name
print len(name)
---
['chouchou', 'guodong', 'benben']
3


----分片赋值方法
可以用来替换、插入、删除

name = list('maomao')  #把maomao用list()转换成列表
print name
name[3:] = list('ben') #从第三个元素开始到结束,用list()转换成的ben来替代
print name
----
['m', 'a', 'o', 'm', 'a', 'o']
['m', 'a', 'o', 'b', 'e', 'n'] name = list('maomao')
name[3:] = list('xihuanben') #从第三个元素开始到结束,用list()转换成的xihuanben来替代
print name
----
['m', 'a', 'o', 'x', 'i', 'h', 'u', 'a', 'n', 'b', 'e', 'n'] name = list('maomao')
name[0:0] = list('da') #从第0个元素开始到第0-1个元素结束(即为[]字符),用list()转换成的da来插入
print name
----
['d', 'a', 'm', 'a', 'o', 'm', 'a', 'o'] number = [1,5]
number[1:1] = [2,3,4] #从第1个元素开始到第1-1个元素结束,用2,3,4来插入
print number
----
[1, 2, 3, 4, 5] number = [4,5]
number[0:0] = [1,2,3] #从第0个元素开始到第0-1个元素,用1,2,3来插入
print number
----
[1, 2, 3, 4, 5] number = [1,2,3,4,5]
number[1:4] = [] #从第1个元素开始到第4-1个元素,用[]来替换,实则为删除第2-4个数字
print number
----
[1, 5]

嗯。。。今天有个巨大的遗留问题就是:分片+step  或者  分片+负数step 的替换、删除、插入怎么玩 ???

揪心啊 ヽ(`Д´)ノ︵ ┻━┻ ┻━┻

٩(๑❛ᴗ❛๑)۶今儿先到这。。helloha~

小白之Python-基础中的基础03的更多相关文章

  1. [.net 面向对象编程基础] (3) 基础中的基础——数据类型

    [.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型 ...

  2. [.net 面向对象编程基础] (4) 基础中的基础——数据类型转换

    [.net面向对象编程基础] (4)基础中的基础——数据类型转换 1.为什么要进行数据转换? 首先,为什么要进行数据转换,拿值类型例子说明一下, 比如:我们要把23角零钱,换成2.30元,就需要把整形 ...

  3. [.net 面向对象编程基础] (5) 基础中的基础——变量和常量

    [.net面向对象编程基础]  (5) 基础中的基础——变量和常量 1.常量:在编译时其值能够确定,并且程序运行过程中值不发生变化的量. 通俗来说,就是定义一个不能改变值的量.既然不能变动值,那就必须 ...

  4. [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式

    [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式 说起C#运算符和表达式,小伙伴们肯定以为很简单,其实要用好表达式,不是一件容易的事.一个好的表达式可以让你做事半功倍的效果,比如 ...

  5. [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句

    [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句 本来没有这一节的内容,后来考虑到既然是一个系列文章,那么就尽可能写的详细一些,本节参考了网上朋友所写的例子,为的是让更多小伙伴学习 ...

  6. [.net 面向对象编程基础] (8) 基础中的基础——修饰符

    [.net 面向对象编程基础] (8) 基础中的基础——修饰符 在进入C#面向对象核心之前,我们需要先对修饰符有所了解,其实我们在前面说到变量和常量的时候,已经使用了修饰符,并且说明了变量和常量的修改 ...

  7. 从头开始学JavaScript 笔记(一)——基础中的基础

    原文:从头开始学JavaScript 笔记(一)--基础中的基础 概要:javascript的组成. 各个组成部分的作用 . 一.javascript的组成   javascript   ECMASc ...

  8. C++ 基础中的基础 ---- 引用

    C++ 基础中的基础 ---- 引用 引用的概念:引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字.一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量.比如: int n ...

  9. python之基础中的基础(一)

    python是一个效率极高的语言,现在市面上的机器学习大部分是由python和R语言完成,所以在不久之前小仙心中便种下了学习python的想法.下面是这一个月多月以来学习的总结,都是基础中基础了. 1 ...

  10. 【Python】编程小白的第一本python(基础中的基础)

    一.变量 如果不知道变量是什么类型,可以通过type()函数来查看类型,在IDE中输入: print(type(word)) 另外,由于中文注释会导致报错,所以需要在文件开头加一行魔法注释 #codi ...

随机推荐

  1. statefulset详解及为何结合headless service部署有状态应用

    1.1 有状态应用管理statefulset StatefulSet(有状态集,缩写为sts)常用于部署有状态的且需要有序启动的应用程序,比如在进行SpringCloud项目容器化时,Eureka的部 ...

  2. 【ccc】为了ds的ccc

    补一下之前的笔记: 今日:str!!~~~ 然后还有gets 和 puts 和一些基础的东西 strlen:统计字符串长度   strcpy:将某个字符串赋值到字符数组中    strcat:拼接字符 ...

  3. javaweb画图

    最近都在忙期中考试,写博客的频率有点低了,以下是一些基本代码,是王建民老师说的要建立自己的资料库,我直接建的资料库. 画图html <!--定义表格宽度 行距 宽度<tr>行< ...

  4. vue组件的对象式写法,vue中的h函数

    render:将虚拟dom转为真实dom h函数:创建的是vnode,也可以成为createVnode函数 语法:h(元素名称 ,这个元素的数据,子集) 第一个参数:可以为一个html标签,一个组件, ...

  5. 基础雷达图(radar)

    基础雷达图 代码 var chartDom=document.getElementById("radar"); var myChart=echarts.init(chartDom) ...

  6. [IOI2014]friend 朋友

    题目传送门 似乎是我的第一篇 IOI 题解? 思路 虽然说是 IOI 题,但是其实并没有那么难. 这个题目描述比较杂乱,简单的描述就是:给你一些关系,你需要选出一些点,使这些点的权值和最大,并且这些点 ...

  7. vue-seamless-scroll滚动加点赞衔接处数据不同步问题

    VUE使用vue-seamless-scroll自动滚动加点赞,因为有两个overhidden导致点击不同同步dom,在代码中会出现两处vue-seamless-scroll上下悬接,悬接处点赞触发没 ...

  8. spring 特性

    1.Aware系列接口 spring 6.0提供了一系列的Aware接口,方便我们在Bean加载时获取信息 如 @Service public class study implements BeanN ...

  9. CF468E Permanent 题解

    考虑暴力状压 DP. 按行 DP,记录列哪些被选过,可以做到 \(O(2^kk^2)\). 注意到某一列扫完了之后这一列选没选过不重要,可以减少这里的状态. 简单优化一下,每次选择最少的一列,使这一列 ...

  10. redis运维与管理

    redis内存存储,速度极快 丰富的附件功能 1.持久化功能:降存储在内存的数据保存到硬盘 2.发布与订阅:将消息同时分发给多个客户端 3.过期键功能:为键设置一个过期时间,让它在指定的时间之后自动被 ...