我的python学习--第二天(list)

前言:

列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型。列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
       Python有6个序列的内置类型,但最常见的是列表和元组。序列都可以进行的操作包括索引,切片,加,乘,检查成员。此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。



1、列表:创建列表,通过索引获取列表的值

注意:索引是从0开始

>>> arr = [‘C‘,1,2,3,‘a‘,‘b‘,True,False,[1,2,[3,5]],‘python‘]
>>> print arr[0]
C
>>> print arr[-1]
python
>>> print arr[6]
True
>>> print arr[8][2][0]
3

2、用in判断值字符串是否存在于某个列表

>>> l = list(‘abcdefg‘)
>>> l
[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘]
>>> ‘a‘ in l
True
>>> ‘z‘ in l
False

3、实现获取list长度的功能

num_list=[1,2,3,[4,5,6]]
i = 0
for j in num_list:
    i += 1
print i

4、python关于list的内置函数

len():返回列表长度

max(): 返回最大值

min(): 返回最小值

del(): 删除元素

>>> a = [1,2,3,4,5]
>>> len(a)
5
>>> max(a)
5
>>> min(a)
1
>>> del(a[1])
>>> a
[1, 3, 4, 5]

注意:自己写函数或者定义变量的时候,不要与内置函数名冲突

5、通过索引实现修改列表中指定的值

>>> a = [2,3,4,1,5,6]
>>> a[0] = 1
>>> a
[1, 3, 4, 1, 5, 6]
>>> a[-1] = 10
>>> a
[1, 3, 4, 1, 5, 10]

6、冒泡排序

l = [3,4,33,26,1]
for i in l:
    for j in range(len(l)-1):
        if l[j]>l[j+1]:
            l[j],l[j+1]=l[j+1],l[j]
print l
#优化后
l = [3,4,33,26,1]
for i in range(len(l)-1):
    for j in range(len(l)-1-i):
        if l[j]>l[j+1]:
            l[j],l[j+1]=l[j+1],l[j]
print l

7、列表切片(功能强大,但可读性差)

切片的原则:起点按照切片的方向上,找到终点

[1:4] 1是起点,4是终点。

[:] 取全部

[::2] 隔一个取一个

[::-1] 从右到左取

[:-1] 最后一个不取

>>> arr = list(‘abcdefg‘)
>>> print arr[2:]
[‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘]
>>> print arr[:5]
[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]
>>> print arr[:5:2]
[‘a‘, ‘c‘, ‘e‘]
>>> print arr[4:1:-1]
[‘e‘, ‘d‘, ‘c‘]

8、list的几个方法

append(): 追加元素

count():统计元素出现次数

extend(): 扩展源列表

index(): 查找值得索引

#append()方法
>>> a = [1,2,3]
>>> b = 5
>>> a.append(b)
>>> a
[1, 2, 3, 5]

#count()方法
>>> a = [1,2,3,2,2,1]
>>> a.count(1)
2

#extend()方法
>>> a = [1,3]
>>> b = [2,4]
>>> a.extend(b)
>>> a
[1, 3, 2, 4]

#index()方法
>>> a = [‘a‘,‘b‘,‘c‘]
>>> a.index(‘a‘)
0

9、insert()方法

insert()方法是在指定的索引位置插入值

>>> a = [‘hello‘,‘!‘]
>>> a
[‘hello‘, ‘!‘]
>>> a.insert(1,‘world‘)
>>> a
[‘hello‘, ‘world‘, ‘!‘]

10、pop()方法

pop()方法是弹出元素,默认弹出最右一个元素

>>> a = list(‘abcdefg‘)
>>> a
[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘]
>>> a.pop()
‘g‘
>>> a.pop(0)
‘a‘

11、数据结构

队列:先入先出

append()和pop(0)可以模拟队列的先入先出

栈:先入后出

append()和pop(0)可以模拟栈的先入后出

数组:

根据索引查找很快,从最后追加也很快,命中cpu缓存的概率大

插入很慢,删除也很慢

链表:

形如:1->2->3->4->5

链表的查找很慢,插入很快,删除也很快。尾部追加也很快

哈希表:

可以通过具体的值来建立关系,例如python中的字典

没有顺序,查找,删除,修改都很快

哈希类型有:FNV哈希,MD5哈希,一致性哈希等



练习:

1、一个序列[1,2,3,4,2,12,3,14,3,21,2,2,3,4111,22,3333,4]

求第二个4的索引值

a = [1,2,3,4,2,12,3,14,3,21,2,2,3,4111,22,3333,4]
b = a.index(4)
a_index4 = a.index(4,b+1)
print a_index4

2、待办事项,让用户持续输入,采用队列

如果用户输入的是add,让用户再输入字符,加到待办事项列表,让用户继续输入,如果用户输入的是do,则从代办事项里打印一个出来,如果没有事情要做,终止程序

sth = []
while True:
    action = raw_input("Please input your type,‘add‘ or ‘do‘: ")
    if action==‘add‘:
        thing = raw_input("Please input thing you want to do: ")
        sth.append(thing)
    elif action==‘do‘:
        if sth:
            todo = sth.pop(0)
            print todo
        else:
            print ‘nothing to do!‘
    else:
        break

3、数组去重

[1,2,3,4,2,12,3,14,3,2,12,3,14,3,21,2,2,3,4111,22,3333,4]

list_a = [1,2,3,4,2,12,3,14,3,2,12,3,14,3,21,2,2,3,4111,22,3333,4]
list_b = []
for i in list_a:
    if i not in list_b:
       list_b.append(i)
print list_b

4、数组去重

arr1 =[1,2,3,4,2,12,3,14,3,2,12,3,14,3,21,2,2,3,4111,22,3333,4]

arr2 = [2,1,3,2,43,234,454,452,234,14,21,14]

求两个数组共同的值(需要去重)

list_a = [1,2,3,4,2,12,3,14,3,2,12,3,14,3,21,2,2,3,4111,22,3333,4]
list_b = [2,1,3,2,43,234,454,452,234,14,21,14]
new_list = []
for i in list_a:
    if i in list_b and i not in new_list:
        new_list.append(i)
print new_list

5、二分思想:在一个排好的list中,找到指定的数字,并显示查找次数

arr = range(10000)
find = input(‘Please enter a number: ‘)
start = 0
end = len(arr)-1
count = 0
while True:
    count += 1
    mid = (start+end)/2
    if find>arr[mid]:
        start = mid
    elif find<arr[mid]:
        end = mid
    else:
        print mid
        break
print count
时间: 2024-11-05 02:38:51

我的python学习--第二天(list)的相关文章

python学习第二天

python学习的第二天就是个灾难啊,这天被打击了,自己写的作业被否认了,不说了,写博客还是个好习惯的,要坚持下去,就不知道能坚持到什么时候.呵呵!!! 这天教的知识和第一天的知识相差不大,区别在于比第一天讲的更细了(我们是两个老师教的,风格是不一样的),这次也写那些比较细的知识点. python的简介 (1)你的程序一定要有个主文件. (2)对于python,一切事物都是对象,对象基于类创建.#似懂非懂,不过有那么点似懂. 知识点 #__divmod__ 会把两个数字相除的商和余数以元组的方式

python学习第二天:数字与字符串转换及逻辑值

1.数字与字符串的转化 #1.数字转字符,使用格式化字符串: *1.demo = ‘%d’  %  source *2.%d整型:%f 浮点型 :%e科学计数  *3.int('source') #转化为int型 #2.字符串转化为数字 *1.导入string :import string *2.demo = atoi(source)  #转换为整型’ atof()    #转为浮点型 2.逻辑值: and  #与 or  #或 not #非 python学习第二天:数字与字符串转换及逻辑值

Python学习第二天数组

1:Python定义数组:a=[0,1,2,3,4] ;   打印数组list(a); 这时:a[0]=0, a[1]=1, a[[2]=2...... 1.1:如果想定义一个很长的数组可以用到python函数range a=range(1000)生成1000个元素的一维数组, list(a) 打印数组显示 1.2:给生成的数组赋初始值:a = [0 for x in range(0, 1000)] 0表示初始值  x表示数组中的元素 range(995,1000)表示从995开始生成到1000

python学习第二讲,pythonIDE介绍以及配置使用

目录 python学习第二讲,pythonIDE介绍以及配置使用 一丶集成开发环境IDE简介,以及配置 1.简介 2.PyCharm 介绍 3.pycharm 的安装 二丶IDE 开发Python,以及配置IDE 1.初始化IDE 2.打开python项目. 3.pycharm设置python的默认解释器版本. 4.pycharm设置为所有用户可以使用,以及启动pycharm 5.设置pycharm启动图标(快捷方式) 6.卸载之前的pycharm python学习第二讲,pythonIDE介绍

Python学习-第二天-字符串和常用数据结构

Python学习-第二天-字符串和常用数据结构 字符串的基本操作 def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的拷贝 print(str1.capitalize()) # Hello, world! # 获得字符串变大写后的拷贝 print(str1.upper()) # HELLO, WORLD! # 从字符串中查找子串所在位置 print(str1.find('o

python 学习第二天 (上)

##课前思想 ###GENTLEMEN CODE 1 * 着装得体 * 每天洗澡 * 适当用香水 * 女士优先 * 不随地吐痰.不乱扔垃圾.不在人群众抽烟 * 不大声喧哗 * 不插队.碰到别人要说抱歉 * 不在地铁上吃东西 * 尊重别人的职业和劳动 * 尊重别人隐私.不随便打听别人工资 * 与人保持安全距离(1米) * 不要随便评价别人 ###GENTLEMEN CODE 2 * 多去旅行,一年至少一个国家 * 多看数,电影,一年15本书,50+部电影 * 学好英语 * 保持不甘心.保持正能量

python学习第二周(数据类型、字符串、列表、元祖、字典)

一.模块.库 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持. 模块初始化:模块就是库,库可以是标准库或者是第三方库. sys模块 os模块 Sys.path 导入模块的时候,先从当前目录下面查找. 我们起名字时候不能和导入的模块名字相同. Python的第三方库 E:\\python_path\\base\\lib\\site-packages Python的标准库位置 E:\\python_path\\base Sys.ar

PYTHON学习第二模块 python内置模块介绍

1 >>> import time 2 >>> time.time() 3 1491064723.808669 4 >>> # time.time()返回当前时间的时间戳timestamp(定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数)的方法,无参数 5 >>> time.asctime() 6 'Sun Apr 2 00:39:32 2017' 7 >>> # time.asctim

Python 学习第二十三天 django 知识(五)

一,django 的model操作 1,字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 primary_key=True 注:当model中如果没有自增列,则自动会创建一个列名为id的列 from django.db import models class UserInfo(models.Model): # 自动创建一个列名为id的且为自增的整数列 us

python学习-第二部分

一.装饰器 装饰器::: 本质 是函数,功能是为了装饰其它函数.就是为其他函数添加附加功能 原则 1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式实现装饰器知识储备:1.函数即"变量" 变量存在在内存当中,变量的回收机制,当没有引用的时候,就回收变量2.高阶函数 a.把一个函数名当做实参传给另外一个函数(在不修改被装饰函数源代码的情况下为其添加功能) b.返回值中包含函数(不修改函数的调用方式) 3.嵌套函数 函数进行嵌套高阶函数+嵌套函数=>装饰器 def