python中列表 元组 字典 集合的区别
(1)列表
什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单。比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单。由于我们买一种东西可能不止一次,所以清单中是允许有重复项的。如果我们扩大清单的范围,统计我们过去一周所有的花费情况,那么这也是一个清单,但这个清单里会有类别不同的项,比如我们买东西是一种花费,交水电费也是一种花费,这些项的类型是可以使不同的。python的列表个跟清单的道理是一样的,特点就是:可重复,类型可不同。类型不同也是跟数组最本质的区别了。python里的列表用“[]”表示:
lst = ['arwen',123]
print lst[0]
print lst[1]
lst[0] = 'weiwen'
向list中添加项有两种方法:append和extend。append是向
如:
(2)元组
元组和列表在结构上没有什么区别,唯一的差异在于元组是只读的,不能修改。元组用“()”表示,如:
tup = ('arwen',123)
print tup[0]
print tup[1]
(3)集合就是我们数学学的集合,没有什么特殊的定义。
集合最好的应用是去重。集合没有特殊的表示方法,而是通过一个set函数转换成集合,如:
lst = [ 1, 1, 0]
lst_set = set( lst ) #lst_set 为1 , 0
tup = (2, 2, 1)
tup_set = set( tup) # tup_set为2 , 1
for item in lst_set:
print item
(4)最后一个是字典。字典存储键值对数据,如:
{
1:a,
2:b,
3:c
}
字典最外面用大括号,每一组用冒号连起来,然后各组用逗号隔开。
字典最大的价值是查询,通过键,查找值。
python3中pop()与remove()的区别
# coding=utf-8
fruit = ['apple', 'pear', 'banana' ]
#指定索引删除
fruit.pop(0)
#符合元素删除,具体数值
fruit.remove('pear')
print(fruit)
运行结果:
['banana']
根据以上事例,可以看出pop()必须使用索引来删除元素,以及remove()必须要指定元素值来删除,不然会出错!!!!!!
下面为反例
pop()用元素值的错误预报
pop()用元素值的错误预报
# coding=utf-8
fruit = ['apple', 'pear', 'banana' ]
fruit.pop('apple')
运行结果:
Traceback (most recent call last):
File "...XXX.py", line 5, in <module>
fruit.pop('apple')
TypeError: 'str' object cannot be interpreted as an integer
remove()用索引的错误预报
# coding=utf-8
fruit = ['apple', 'pear', 'banana' ]
fruit.remove(0)
print(fruit)
运行结果:
Traceback (most recent call last):
File "...XXX.py", line 4, in <module>
fruit.remove(0)
ValueError: list.remove(x): x not in list
python 没有++运算符的疑问
学习Python,当想要自增运算的时候很自然的 a++,结果发现编译器是不认识 ++ 的
关于自增操作,python 不使用 ++ 的哲学逻辑:编译解析上的简洁与语言本身的简洁,就不具体翻译了
python 与 c 语言概念上的一些差异,语言描述的可能未必准确,直接上例子:
>>> b = 5
>>> a = 5
>>> id(a)
162334512
>>> id(b)
162334512
>>> a is b
True
可以看出, python 中,变量是以内容为基准而不是像 c 中以变量名为基准,所以只要你的数字内容是5,不管你起什么名字,这个变量的 ID 是相同的,同时也就说明了 python 中一个变量可以以多个名称访问
这样的设计逻辑决定了 python 中数字类型的值是不可变的,因为如果如上例,a 和 b 都是 5,当你改变了 a 时,b 也会跟着变,这当然不是我们希望的
网友评论