美文网首页我的技术文章
Python_2_变量和集合

Python_2_变量和集合

作者: 芭比哪吒 | 来源:发表于2018-08-16 12:03 被阅读15次

2.变量和集合

Python 有一个打印函数

print("亲爱的用户你好,我是你爸爸,微软如是说")  
# => 亲爱的用户你好,我是你爸爸,微软如是说

默认的打印会自动打印一个回车帮你换行

但是你也可以使用 end 实现不换行

print("小姐姐小姐姐,我有一个东西想要给你!", end="我你要么?") 
# => 小姐姐小姐姐,我有一个东西想要给你!我你要么?

一个从控制台简单的获取数据的方法

input_string_var = input("输入一些东西: ") # 输入数据然后回车

变量是不需要声明的

some_var = 5

some_var  # => 5

if可以被用作三目运算符

temp = 'A' if (3 > 2) else 'B'
print(temp)
# 如果条件成立输出‘A’ 否则 输出 ‘B’

列表

时刻记住列表下标从0开始

li = []

也可以声明一个有内容的列表

other_li = [4, 5, 6]

列表内容追加 所谓追加就是在列表的最后一行添加

li.append(1)    # 列表现在变成 [1]
li.append(2)    # 列表现在变成 [1, 2]
li.append(4)    # 列表现在变成 [1, 2, 4]
li.append(3)    # 列表现在变成 [1, 2, 4, 3]

删除最后一个元素

li.pop() # 列表现在变成 [1, 2, 4]

把刚才删除的值放回去

li.append(3) # 列表现在又变成 [1, 2, 4, 3]

获取列表元素 如同访问数组一般

li[0] # => 1

获取列表最后一个元素

li[-1] # => 3

这样的访问将会引起越界

li[4] # Raises an IndexError


时刻记住列表下标从0开始 拿出耐心来 学到这里已经有些无聊了是么?

切片操作 就像你切香肠一样 只是包前不包后

第1个到第3个,并且不取第三个 li[1] li[2]

li[1:3] # [1, 2, 4, 3] => [2, 4]

li[2]到最后一个

li[2:] # [1, 2, 4, 3] => [4, 3]

li[0]到li[3]

li[:3] # [1, 2, 4, 3]=> [1, 2, 4]

每隔两个取一个

li[::2] # [1, 2, 4, 3]=>[1, 4]

反向的copy

li[::-1] # [1, 2, 4, 3]=> [3, 4, 2, 1]

使用这些你可以随心所欲的操作列表

li[开始index:结束index:步数]

深度的复制

li2 = li[:]  
# => li2 = [1, 2, 4, 3] 但是 (li2 is li) 将会返回 False 他们不是一个对象
# => (li2 == li) 将会返回 True

删除任何一个你想删除的

del li[2] # [1, 2, 4, 3] 变成 [1, 2, 3]

从第一个开始寻找,删除第一个找到的项

li.remove(2)  # 加入list为][1,2,3,2] 现在变成了 [1,3,2]

li.remove(2)  # [1,3,2] 变成 [1,3]

在某个指定的索引处 插入元素

li.insert(1, 2)  # 在li[1]处插入2

获取索引

li.index(2)  # => ‘2’这个元素所在的位置
li.index(4)  # Raises a ValueError 4不在集合中所有会引发异常

你可以连接两个list

li1=[1,2,3]
li2=[4,5,6]
li1 + li2  # => [1, 2, 3, 4, 5, 6]

也可以使"extend()"

li1.extend(li2)  # 效果是一样的

检查元素是否在list中

1 in li  # => True

获得list长度

len(li)  # => 6

Tuples元组

看起来像list但是它不可改变

tup = (1, 2, 3)
tup[0]      # => 1
tup[0] = 3  # Raises a TypeError

长度为1的元组必须在最后一个元素后面有一个逗号

type((1))   # => <class 'int'>
type((1,))  # => <class 'tuple'>
type(())    # => <class 'tuple'>

你可以把许多的list操作迁移到元组的操作上

len(tup)         # => 3
tup + (4, 5, 6)  # => (1, 2, 3, 4, 5, 6)
tup[:2]          # => (1, 2)
2 in tup         # => True

你可以使用元组/list给变量批量的赋值

a, b, c = (1, 2, 3)  # a=1 b=2 c=3

你也可以打包赋值

a, *b, c = (1, 2, 3, 4)  # a=1 b=[2, 3] c=4

离开了括号,元组会自主默认创建

d, e, f = 4, 5, 6

交换两个变量的值,很简单

e=5
d=4
e, d = d, e  # d=5 e= 4

字典类型

存储键值对

empty_dict = {}

预定义字典值

filled_dict = {"one": 1, "two": 2, "three": 3}

字典的键必须是不可变类型,因为这样才能使得键可以被转化为哈希值以便快速查找

不可变类型包括 ints, floats, strings, tuples.

invalid_dict = {[1,2,3]: "123"}  # => Raises a TypeError: list是可变的类型
valid_dict = {(1,2,3):[1,2,3]}   # 元组就是可以的

用[]查看值

filled_dict["one"]  # => 1

使用Keys()可以获取 键的集合,将它放在list中就可以迭代取处。但是它们的顺序是混乱的

list(filled_dict.keys())  # => ["three", "two", "one"]

使用Values()可以获取 键的集合,将它放在list中就可以迭代取处。但是它们的顺序是混乱的

list(filled_dict.values())  # => [3, 2, 1]

检查一个key是否在字典中,使用in

"one" in filled_dict  # => True
1 in filled_dict      # => False

寻找一个不存在的键值对事会报错的 错误类型 KeyError

filled_dict["four"]  # KeyError

使用get可以避免KeyError错误

filled_dict.get("one")      # => 1
filled_dict.get("four")     # => None

get支持默认值,当所取的值不存在的时候会返回默认值

filled_dict.get("one", 4)   # => 1
filled_dict.get("four", 4)  # => 4

setdefault()当这个键值对不存在的时候将它插入字典

filled_dict.setdefault("five", 5)  # 将 filled_dict["five"] 设置为 5
filled_dict.setdefault("five", 6)  # filled_dict["five"] 依旧是 5

添加一个键值对到字典

filled_dict.update({"four":4})  # => {"one": 1, "two": 2, "three": 3, "four": 4}
filled_dict["four"] = 4         # 这是另外一种方法

使用del删除字典里的一个键值对

del filled_dict["one"]

这是我也不懂,也懒得查资料~嘿嘿!

{'a': 1, **{'b': 2}}  # => {'a': 1, 'b': 2}
{'a': 1, **{'a': 2}}  # => {'a': 2}

集合

这是一个空的集合

empty_set = set()

初始化一个带值的集合,它看起来有点像字典

some_set = {1, 1, 2, 2, 3, 4}  # some_set is now {1, 2, 3, 4}

类似于字典的特性,集合的元素也要求必须不可变

invalid_set = {[1], 1}  # => Raises a TypeError: 列表可变引发错误
valid_set = {(1,), 1}

给集合添加元素

filled_set = {1, 2, 3, 4}
filled_set.add(5)  # filled_set 现在是 {1, 2, 3, 4, 5}

求集合交集&

other_set = {3, 4, 5, 6}
filled_set & other_set  # => {3, 4, 5}

求并集 |

filled_set | other_set  # => {1, 2, 3, 4, 5, 6}

求差集 -

{1, 2, 3, 4} - {2, 3, 5}  # => {1, 4}

求对称差集 ^

{1, 2, 3, 4} ^ {2, 3, 5}  # => {1, 4, 5}

超集检查

{1, 2} >= {1, 2, 3} # => False

自集检查

{1, 2} <= {1, 2, 3} # => True

元素存在检查 in

2 in filled_set   # => True
10 in filled_set  # => False

相关文章

  • Python_2_变量和集合

    2.变量和集合 Python 有一个打印函数 默认的打印会自动打印一个回车帮你换行 但是你也可以使用 end 实现...

  • 生成式模型 VS 判别式模型

    假设可观测到的变量集合为 X,需要预测的变量集合为 Y,其他变量集合为 Z。 生成式模型是对联合概率分布 P(X,...

  • Kotlin-变量、数组和集合

    一:变量的定义 var变量variable可变变量:赋值之后可以多次修改 val常量value不可变变量:赋值之后...

  • 闭包的实现原理

    作用域和作用域链 在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。 全局变量 变量在函数外定...

  • JavaScript 作用域

    作用域可访问变量的集合。 avaScript 作用域在 JavaScript 中, 对象和函数同样也是变量。在 J...

  • 为什么需要modCount?

    Java集合类中常见的变量 -- modCount 在java的集合类中常见的变量modCount,用于记录对象的...

  • Postman中的全局/环境/集合变量的使用及优先级

    变量的使用场景Postman的变量主要用于参数化和关联 应用1: 常用变量可以按使用范围设置成集合或全局变量 应用...

  • R-dplyr 处理关系数据

    合并连接 加入新变量 筛选连接 筛选原有观测 集合操作 相同变量进行集合 由于连接每对数据表的变量称为键(k...

  • Swift-集合

    集合的初始化 集合的成员变量 遍历 集合的增删改查 集合中的数学方法

  • javaScript作用域

    作用域为可访问变量的集合。 在javaScript中,对象和函数同样也是变量, 在javaScript中作用域为可...

网友评论

    本文标题:Python_2_变量和集合

    本文链接:https://www.haomeiwen.com/subject/hqinbftx.html