博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 学习- 列表,字符串,数据操作和字典
阅读量:6656 次
发布时间:2019-06-25

本文共 6846 字,大约阅读时间需要 22 分钟。

hot3.png

pip命令安装第三方库:

 

 导入库的时候,可以用import命令,如果是标准库,那么直接运行即可,如果是第三方的库,需要用pip命令安装之后才能导入。

例如

1

pip install pandas

 

os.system命令和 os.popen命令:

 

上一周学习了基本的os.system()命令,这个命令在windows下面同样工作。例如输出IP配置信息

1

2

>>>import os

>>>os.system("ipconfig")

如果希望保存到变量,可以

1

2

3

>>>import os

>>>r=os.popen("ipconfig").read()

>>>print(r)

 

Pyc文件:

当在一个Python文件中导入另外一个Python模块的时候,执行会自动生成一个PYC文件。这个文件是一个字节码文件。Python的工作原理是首先把源文件编译成pyc字节码文件,然后这个字节码文件再通过python的虚拟机执行。当手动运行python程序的时候,他不会在硬盘上保存对应的pyc文件,这是因为手动执行的频率一般而言不会太高,当下一次操作的时候,对应的内容可能有更改,因此没有保留的意义。而自动导入执行的时候,会自动创建对应的pyc文件。

 

数据类型:

int:整型, Python3以后不区分长整型和普通整型了

bool: 布尔型, True或者1为真;False或者0为假

字符串:注意下面例子的区别,他们的结果显示一样,不过+是创建了3个内存分区;而后者只用了1个,效率更高。

1

2

3

4

>>>name="yuan li"

>>>print("My name is "+ name+" and You?")

>>>print("My name is %s and You?" %name)

My name is yuan li and You?

 

列表:其他语言里面叫做数组,是使用最最广泛的

 

例子:

 

获取第一个元素

1

2

3

>>>name=["zhangsan","lisi","wangwu"]

>>>name[0]

'zhangsan'

 

获取最后一个元素

1

2

>>>name[-1]

'wangwu'

 

 

获取前第一个元素

1

2

>>>name[0:1]

['zhangsan']

 

 

获取倒数第2个元素

1

2

>>>name[-2:-1]

['lisi']

 

 

设置步长为2,隔一个取一个元素

1

2

>>>name[::2]

['zhangsan''wangwu']

 

 

切片,获取子列表的第三个元素

1

2

3

>>>name=["h","sjdkf",23,232,["22","33",234]]

>>>name[4][2]

234

 

 

指定索引位置,插入新元素

1

2

3

>>>name.insert(3,"hhhh")

>>>name

['h''sjdkf'23'hhhh'232, ['22''33'234]]

 

 

判断是否存在元素

1

2

3

4

5

6

7

8

9

10

>>>name

['jkjjljlj''sjdkf', ['22''33'234], 'end']

>>> 22 in name

False

>>> '22' in name

False

>>> 'end' in name

True

>>> '22' in name[2]

True

 

 

指定元素的值来删除 注意一次只能删除一个

1

2

3

>>> name.remove(23)

>>> name

['h''sjdkf''hhhh'232, ['22''33'234], 'end']

 

一次性删除多个连续的元素,可以使用del

1

2

3

>>> del name[2:4]

>>> name

['h''sjdkf', ['22''33'234], 'end']

 

修改某个位置的元素值

1

2

3

>>> name[0]='jkjjljlj'

>>> name

['jkjjljlj''sjdkf', ['22''33'234], 'end']

 

判断某元素个数

1

2

>>>name.count('22')

0

 

把所有的9都改成999

1

2

3

4

5

6

7

>>> name=[2,2,3,9,23,9,22,21,9]

for in range(name.count(9)):

    index=name.index(9)

    name[index]=999

print(name)

 

[223999239992221999]

 

合并name2 到name里面

1

2

3

4

name.extend(name2)

print(name)

 

['AA''jksf', [2995], '234''klk''sdf']

 

排序 注意混杂字符串和数字的列表在3里面不能排序,但是在2里面会按照ansc编码的值排序

1

2

3

4

5

>>> print(name.sort())

 

Traceback (most recent call last):

  File "<input>", line 1in <module>

TypeError: unorderable types: list() < str()

 

根据索引号删除,如果不指定索引号,默认删除最后一位

1

2

3

4

>>> name.pop(2)

print(name)

 

['AA''jksf', [2995], '234']

 

列表的复制,注意copy只能复制第一层的数据,里面嵌套的列表,仅仅复制了内存地址,换而言之,就是类似一个软连接,在源列表和复制后的列表里,如果修改嵌套的列表内的元素,两个表显示出来的效果都会同时变化。

1

2

3

4

5

6

7

8

9

>>> name=['al','jksf','sdf',[2,3,5],'234']

name3=name.copy()

name[0]='AA'

name[3][1]=99

print(name)

print(name3)

 

['AA''jksf''sdf', [2995], '234']

['al''jksf''sdf', [2995], '234']

 

 

如果想进行深度的复制,需要使用copy模块的deepcopy命令, 可以看见deepcopy之后他们是两个独立的个体,互相不受影响

1

2

3

4

5

6

7

8

9

>>> import copy

name=['al','jksf','sdf',[2,3,5],'234']

name4=copy.deepcopy(name)

name[3]='22222'

print(name)

print(name4)

 

['al''jksf''sdf''22222''234']

['al''jksf''sdf', [235], '234']

 

元组:tuple,只有只读属性的列表

用圆括号定义

1

2

>>> r=(1,3,4,5)

print(type(r))

因为只有只读属性,他的函数只有count和index两个

1

2

3

4

>>> print("count of 1:",r.count(1))

print("index of 3:",r.index(3))

count of 11

index of 31

 

字符串的操作

 

例如:去掉前后的空格

1

2

3

>>> user = " Yuan Li is a handsome man "

print(user.strip()) # remove space in the front and end

Yuan Li is a handsome man

 

用split分割字符串成为一个列表;用join合并列表成为一个字符串

1

2

3

4

5

6

>>> names="zhangsan, lisi, wanger"

name2=names.split(",")  #become list

print(name2)

print("|".join(name2))

['zhangsan'' lisi'' wanger']

zhangsan| lisi| wanger

 

指定索引输出

1

2

>>> print(names[0])

z

 

判断是否包括某个字符

1

2

>>> print(' ' in names)

True

 

大写首字母

1

2

>>> print(names.capitalize())

Zhangsan, lisi, wanger

 

两种方式传入参数

1

2

3

4

5

6

>>> msg="hello,{name}, it's been a long {time}"

msg2=msg.format(name='Yuan',time= 'period')

msg3="hhh{0},dddd{1}"

print(msg2)

print(msg3.format('Yuuu','222'))

hello,Yuan, it's been a long period

 

切片

1

2

3

>>> name="abcedefgh"

print(names[2:5])

ang

 

输出居中的格式center()

1

2

>>> print(name.center(40,'-'))

---------------abcedefgh----------------

 

find查找字符串中包含的字符,如果存在,返回索引,不存在返回-1

 

1

2

3

4

5

>>> name="abcedefgh"

print(name.find('e'))

print(name.find('dddd'))

3

-1

 

isdigit()判断输入的是否是数字

1

2

3

4

5

6

7

>>> age=input("your age:")

if age.isdigit():

    age=int(age)

else:

    print("invalid data type")

your age:>? er        

invalid data type

 

endwith()判断以什么结尾

1

2

3

>>> name="abcedefgh"

print(name.endswith("fgh"))

True

 

转换大小写

1

2

>>> print(name.upper())

ABCEDEFGH

 

数据运算

 

 

1、算数运算:a=10,b=20

2、比较运算:

3、赋值运算:

4、逻辑运算:

5、成员运算:

 

 

6、 二进制运算:

 

 

运算符 描述 解释
与运算 这个二进制位必须在2组数中都为真,结果才返回真
I    或运算 这个二进制位只需在其中一组数据中为真即返回真
异或运算 只要这个二进制位在两组数据中不相同就返回
<<  左移运算 移动一位相当于乘以2
>>  右移运算 移动一位相当于除以2

 

 

字典:无序,Key和value配对,key值唯一

例子:定义一个嵌套的字典

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

id_db={

    23432424234234324:{

        'name':"alex",

        'age':23,

        'addr':'Shandong'

    },

    234324324234324242:{

        'name':'Yuan',

        'age':24,

        'addr':'Sichuan'

    },

    234242423222222222:{

        'name':'john',

        'age':20,

        'addr':'HeNan'

    }

}

指定Key,输出对应的Value

1

2

print(id_db[234242423222222222])

{

'name''john''age'20'addr''HeNan'}

 

更改一个Key的值

1

2

3

id_db[234242423222222222]['name']='hhh'

print(id_db[234242423222222222])

{

'name''hhh''age'20'addr''HeNan'}

 

添加一个新的key/value 元素

1

2

3

id_db[234242423222222222]['qq']=2900032

print(id_db[234242423222222222])

{

'name''john''age'20'qq'2900032'addr''HeNan'}

删除一个元素

1

2

del id_db[234242423222222222]['qq']

print(id_db[234242423222222222])

 

另外一种删除的方式

1

2

id_db[234242423222222222].pop('age')

print(id_db[234242423222222222])

 

get,如果该Key存在,返回对应的值

1

2

3

v=id_db.get(234242423222222222)

print(v)

{

'name''john''age'20'addr''HeNan'}

如果不存在,返回None

1

2

3

v=id_db.get(22222)

print(v)

None

 

注意,如果使用直接赋值的方式,如果不存在,它会直接抛出一个错误。

 

1

2

3

4

5

v=id_db[22222]

print(v)

Traceback (most recent call last):

  File "<input>", line 35in <module>

KeyError: 22222

 

 

把一个新的字典加入当前的字典

 

1

2

3

4

5

6

dic2={

'name':'kkkk',

      'age':32,

      'addr':'Hongkong'}

id_db.update(dic2)

print(id_db)

{

234324324234324242: {
'name''Yuan''age'24'addr''Sichuan'}, 23432424234234324: {
'name''alex''age'23'addr''Shandong'}, 'addr''Hongkong''name''kkkk''age'32234242423222222222: {
'name''john''age'20'addr''HeNan'}}

 

直接输出,不建议使用,效率低

1

print(id_db.items())

 

分别输出Key和Value

1

2

print(id_db.values())

print(id_db.keys())

 

判断是否存某个Key

1

print(234242423222222222 in id_db)

 

判断这个key是否存在,如果存在,返回value;如果不存在,创建这个key和对应的value,如果不设置value,那么默认为None

1

2

print(id_db.setdefault(234242423222222222))#if exists, erturn the value

print(id_db.setdefault(234242423222222122222222,'hhhh'))#otherwise add a new key/value

 

创建一个新的字典,把列表里面的每一个值拿出来作为key,然后后面的分配同样的值

1

2

print(id_db.fromkeys([1,2,3,3],'ddd'))

{

1'ddd'2'ddd'3'ddd'}

 

随机的删除一项

1

print(id_db.popitem())

 

输出字典的Key和Value,有两种方式,第一种方式适合比较小的字典,效率低;第二种效率比较高

1

2

3

4

for k,v in id_db.items():

    print(k,v)

for key in id_db:

    print(key,id_db[key])

 

登录乐搏学院官网

或关注我们的官方微博,还有更多惊喜哦~

本文出自 “” 博客,请务必保留此出处

转载于:https://my.oschina.net/learnbo/blog/870736

你可能感兴趣的文章
mysql5.7采坑
查看>>
mysql5.5手册读书日记(4)
查看>>
20172304 《程序设计与数据结构》第三周学习总结
查看>>
NSScanner
查看>>
Mac下如何显示隐藏文件
查看>>
CA1060
查看>>
java_包含抽象方法的枚举类
查看>>
OS | Socket
查看>>
02-CSS基础与进阶-day1-录像293
查看>>
Web Services 应用开发学习笔记(三):XML模式定义
查看>>
Hadoop之hive 其他
查看>>
基础题(二)
查看>>
BGD 通信15-1 150206102 王嘉良 DDS信号发生器
查看>>
4-26 pts dts
查看>>
顺序查找JAVA实现 设置哨兵
查看>>
第十一章 继承与派生 学习笔记
查看>>
SQL 模糊查询 模糊查找 字符串匹配
查看>>
SpringSecurity学习之基于数据库的用户认证
查看>>
zepto和jquery的区别
查看>>
iview Tree组件实现深度查询
查看>>