2.数据类型【列表和字典】

数据类型

字符编码:

我们通常还是用GBK指代中文windows内码

usf-8是对编码的压缩和优化,在编写python的时候需要声明给python解释器(说了python是解释型语言),使用什么编码来执行源代码:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

注释:

单行注释#
多行注释 ``` ```

用户输入:

input()
需要限制输入类型的时候,在input外面套接一个数据类型例如int(input())

输入密码时,如果想要不可见,需要利用getpass模块中的getpass方法:

import getpass
pwd = getpass.getpass('enter your pwd:')

数据类型

在这里穿插解释数据类型

  1. 数字
    int整型
    long长整型:在python2.2以后的版本里,python在长整数据后面不加L也不会有太大的问题
    float浮点型
    complex复数

  2. 布尔值
    真/假

  3. 字符串
    'hello world'

  • 字符串的格式化输出

name = 'scott'
print('i am %s'%name)

#字符串是%s ; 整数%d ; 浮点数 %f
  • 字符串操作方法:

print(name.strip()) #脱

print(name.split()) #分割

print(name.len()) #长度

print(name.index('s')) #索引

name1 = 'scott,jack,jerry'

print(name[0:4])
#输出结果为‘scot’
#说明python切片的一条规则

#**顾头不顾尾**
#范例:
print(name [-6:])
print(name [-6:1])
print(name [0::3])   #隔几个字符取一次

列表和字典

list列表

  • 定义列表
>>> name = ['scott','jack','jerry','peter']
  • 添加元素(append)
>>> name.append('super')
>>> name
['scott', 'jack', 'jerry', 'peter', 'super']
  • 定位添加元素(insert)
>>> name.insert(2,'alex')
>>> name
['scott', 'jack', 'alex', 'jerry', 'peter', 'super']
  • 定位删除元素
>>> name.pop(3)
'jerry'
>>> name
['scott', 'jack', 'alex', 'peter', 'super']

不添加参数,默认删除最后一个

>>> name.pop()
'super'
  • 在列表中定位元素位置
>>> name.count('jack')
1
list的深浅拷贝
## 计算结果以及为什么?
a = [1, 2, [3, "hello"], {"egon": "aigan"}]
# 形参a指向一块储存列表的内存位置
b = a[:]
# 形参b指向相同的位置

a[0] = 5
# 原本a的列表修改了某个值,a指向别的内存地址,该地址存储着新的列表
# a修改了某个一层列表元素的位置,b不受影响
a[2][0] = 666
# a修改了某个二层列表元素的位置,b受到影响
print(a)
print(b)
# 知识点:深浅拷贝,b = a[:]让b获得了a的值,但是二者并不公用一块内存地址
# 但是两个列表中的二级列表,指向的是同一块内存地址,
# 所以当两个列表中,一级元素发生改变的时候,互不影响,但当二级元素发生改变的时候,二者同时发生变化。
# 有用于强制深拷贝的模块

dict 字典

key Value 键值
key 必须唯一

  • 字典为什么是无序的?
name= {
    9527:{'name':'scott','age':23},
    9528:{'name':'jack','age':24},
    9529:{'name':'jerry','age':22},
    9530:{'name':'peter','age':22}
    }
  • 取值
    print(name[9527]['age'])


  • name[9526] = 'yage'


  • print(name.pop(9526)) #---会返回他的值
    print(name.popitem()) #---随机删除一个

    • 修改某个字典元素
      name[9528][0] = 'super jack'

    • 在某个字典中增加一个数字
      name[9529].append(28)

print(name.get(9527))
print(9527 in name)
print(name.keys())
print(name.values())
  • loop

    • 只打印key
      for i in name:
      print(i)

    for i in name.items():
    print (i)

    for k,v in names.items():
    print(k,v)

  • 更新

dict2 = {
    9523:{'name':'sco','age':23}
    9524:{'name':'jac','age':24}
    9525:{'name':'jer','age':22}
    9536:{'name':'pet','age':22}
    }

.update()
如果dict.update(dict2)
如果dict2中有dict已经有的键值,就更新覆盖该键值

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

posted @ 2017-09-03 10:19  sc0T7_ly  阅读(142)  评论(0编辑  收藏  举报