资讯专栏INFORMATION COLUMN

python中的list,tuple,set和dict(参考python文档)

NervosNetwork / 1367人阅读

摘要:声明一个很简单,只需尽量不要将变量名起为关键字。有如下基本方法在的末尾添加一个元素,并且返回将另一个的对象添加到尾部,返回值为。返回值为删掉的元素。为一个表达式,传入当前元素,返回时依据德关键字。

1.list

声明一个list很简单,只需list1=[](尽量不要将变量名起为关键字list)。
list有如下基本方法:

(1)append(x) 在list的末尾添加一个元素x,并且返回None

list1 = [1, 2, 3, 4]
r = list1.append(5)
print(list1, r)
#[1, 2, 3, 4, 5] None

(2)extend(iterable) 将另一个iterable的对象添加到list尾部,返回值为None。

list1 = [1, 2, 3, 4]
r = list1.extend([5, 6, 7, 8])
print(list1, r)
#[1, 2, 3, 4, 5, 6, 7, 8] None

(3)insert(i,x) 将元素x插入到索引i处,返回值为None。

list1 = [1, 2, 3, 4]
r = list1.insert(4, 5)
print(list1, r)
#[1, 2, 3, 4, 5] None

(4)remove(x) 删除值为x的元素(值而非索引),删除成功返回None,若没有x则报错

list1 = [1, 2, 3, 4]
r = list1.remove(3)
print(list1, r)
#[1, 2, 4] None


list1 = [1, 2, 3, 4]
r = list1.remove(5)
print(list1, r)


Traceback (most recent call last):
  File "E:/Programs/python/data-structure/list-demo.py", line 2, in 
    r = list1.remove(5)
ValueError: list.remove(x): x not in list

(5)pop([i]) 如果传入参数i,删除索引i处元素。如果不传参,删除尾部的元素。返回值为删掉的元素。

list1 = [1, 2, 3, 4]
r = list1.pop(3)
print(list1,r)

#[1, 2, 3] 4

(6)clear() 清空数组所有元素,返回None。相当于list1[:]=[]以及del list1[:]

list1 = [1, 2, 3, 4]
r = list1.clear()
print(list1, r)

#[] None

(7)count(x) 返回x在list中出现的次数

list1 = [1, 2, 3, 4, 1, 2, 3, 4, 2, 4]
r = list1.count(4)
print(r)

#3

(8)sort(key=None, reverse=False) 默认从小到大,如果reverse设为True则为从大到小。key为一个lambda表达式,传入当前元素,返回sort时依据德关键字。

list1 = [{"age": 20}, {"age": 15}, {"age": 18}, {"age": 25}]
list1.sort(key=lambda stu: stu["age"])
print(list1)

(9)reverse() 反转数组

list1 = [1, 2, 3, 4, 5]
list1.reverse()
print(list1)

#[5, 4, 3, 2, 1]

(10)copy() 浅拷贝数组,相当于list1[:]

list1 = [1, 2, 3, 4, {"name": "John"}]
list2 = list1.copy()
list2[4]["name"] = "Mike"
print(list1 is list2)
print(list1)
print(list2)

#
False
[1, 2, 3, 4, {"name": "Mike"}]
[1, 2, 3, 4, {"name": "Mike"}]

以上为list常用方法。
list可以作为栈使用。

>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]
(官网代码)

也可以作为队列使用,但是需要导入collections包的deque

>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry")           # Terry arrives
>>> queue.append("Graham")          # Graham arrives
>>> queue.popleft()                 # The first to arrive now leaves
"Eric"
>>> queue.popleft()                 # The second to arrive now leaves
"John"
>>> queue                           # Remaining queue in order of arrival
deque(["Michael", "Terry", "Graham"])

初始化list的小窍门:

list1 = [x ** 2 for x in range(10)]
print(list1)
#[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

list1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
list2 = [num for sub in list1 for num in sub]
print(list1)
print(list2)
#[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

list1 = [(x, y) for x in range(1, 4) for y in range(x, 4)]
print(list1)
#[(1, 1), (1, 2), (1, 3), (2, 2), (2, 3), (3, 3)]

matrix = [[1, 2, 4, 5], [5, 6, 7, 8], [9, 10, 11, 12]]
r = [[row[i] for row in matrix] for i in range(4)]
print(r)
#[[1, 5, 9], [2, 6, 10], [4, 7, 11], [5, 8, 12]](官网案例)

del语句:del arr[i]删除索引为i的元素,del arr[:]为清空数组,del arr[i:j]为清空i到j之前的元素,包括i不包括j。

遍历方式

list1 = [1, 2, 3, 4, 5, 6, 7, 8]

for i in range(len(list1)):
    print(i, list1[i])

for i, val in enumerate(list1):
    print(i, val)
2.tuple

tuple1 = () 此时tuple1为tuple类型
tuple2 = (1) 此时tuple2非tuple类型,而是int类型
tuple3 = 1, 或者 tuple3 = (1,) 此时tuple3为tuple类型

tuple1 = ()
tuple2 = (1)
tuple3 = 1,
tuple4 = 1, 2, 3, 4
tuple5 = tuple4, 5
print(type(tuple1))
print(type(tuple2))
print(type(tuple3))
print(type(tuple4))
print(tuple5)

#



((1, 2, 3, 4), 5)

tuple可以使用切片,但是tuple不可变,不能给其中元素重新赋值。

tuple1 = 1, 2, 3, 4, 5, 6
tuple1[2] = 5

#Traceback (most recent call last):
  File "E:/Programs/python/data-structure/list-demo.py", line 2, in 
    tuple1[2] = 5
TypeError: "tuple" object does not support item assignment

可以通过以下代码实现两个变量值的互换

x = 5
y = 6

x, y = y, x
print(x)
print(y)

#6
5
3.set

执行set1={}这种语句,set1的类型为dict而非set

set1 = {}
print(type(set1))

#

当用set构造函数创建set时要注意以下的问题:

set1 = set("abcedfg")
print(set1)

#{"f", "c", "g", "e", "b", "a", "d"}

set是无序的,并且其中没有重复元素,因此可以通过set实现去重。

list1 = [1, 1, 2, 3, 4, 4, 5, 6, 6, 7]
print(list(set(list1)))

#[1, 2, 3, 4, 5, 6, 7]

set可以进行求交集,并集,差集,以及找出只存在于其中一个的元素集合

a = set("abracadabra")
b = set("alacazam")

print(a)
print(b)

print(a & b)
print(a | b)
print(a - b)
print(a ^ b)

#
{"r", "b", "a", "c", "d"}
{"z", "a", "m", "c", "l"}
{"c", "a"}
{"z", "r", "b", "a", "m", "c", "d", "l"}
{"r", "b", "d"}
{"z", "m", "r", "b", "d", "l"}
4.dict

初始化dict,需要将key与value都加上引号:

dict1 = {"name": "Jero", "age": 20}

获取可采用更简单的方法

dict2 = dict(name="Jero", age=20)

遍历dict时,有如下选择

dict1 = {"name": "Jero", "age": 20, "gender": "male"}

for i in dict1:
    print(i, dict1[i])
#name Jero
age 20
gender male


for val in dict1.values():
    print(val)
#Jero
20
male


for key, val in dict1.items():
    print(key, val)

运算:

list1 = [1, 2, 3]
list2 = [4, 5, 6]

print(list1 * 2)

list1 += list2

print(list1)

#[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44585.html

相关文章

  • 记录我的Python学习笔记

    摘要:本文是通过廖雪峰的网站学习而整理的真的是很好的教程,省得我花钱买书了,然后我没有去再整理总结语法,而是直接通过写出代码段来体现自己的学习,也方便以后的快速复习回顾。 不想再像以前那样,什么都从头开始学习语法、总结语法,这样反而会过分纠结于语法,耽误了开发,毕竟语言的主要属性是工具,次要的属性是语言本身。 所以还是先熟练使用语言去进行开发,等足够熟悉了,再去研究语言本身(编译原理……)。...

    lijy91 评论0 收藏0
  • Python零基础到入门】Python基础语法篇——基本数据类型【文末送书】

    摘要:布尔值布尔值和布尔代数的表示完全一致,一个布尔值只有两种值的数据类型可以通过内置的函数查询,例如还可以用来判断和的区别在于不会认为子类是一种父类类型。会认为子类是一种父类类型。基本功能是进行成员关系测试和删除重复元素。 ...

    Winer 评论0 收藏0
  • python学习笔记-数据集合: list,tuple,dict,set

    摘要:元素的获取与一致,即即可。中的是唯一的不可变对象。若不存在该则返回。是一个有序且不重复的数据集合。创建创建时重复的元素将被自动删除。添加元素删除元素若元素不存在,则会报错误。 Python的数据集合有四种,即list,tuple,dict,set 列表,List List是Python中一种有序的可变的数据集合。它的元素可以被添加或则删除。List的表示方法是用一个[]将元素包含起来,...

    qylost 评论0 收藏0
  • 3-python 元组 字典 集合的操作

    摘要:元组本质是一种有序集合和相似元组是不可变的用创建其中类型可以不同如果一个元组中只有一个元素,在这个元素后面加一个逗号来消除歧义修改元组表面上看,的元素改变了,但实际上变得不是的元素,是的元素删除被直接删除数据类型转换字典字典中的必须唯一值必 元组 tuple 本质是一种有序集合 和list相似 元组是不可变的 用()创建 其中类型可以不同 如果一个元组中只有一个元素,在这个元素后面加...

    CKJOKER 评论0 收藏0
  • 史上最全的 Python 3 类型转换指南

    摘要:支持转换为类型的,仅有,其他类型均不支持。如果中含有正负号数字和小数点以外的字符,则不支持转换。转换时,会自动添加虚数部分并以表示。转换会直接完全转换。转换列表,会取每个字节的十进制值并组合成列表转换为比较简单。 int 支持转换为 int 类型的,仅有 float、str、bytes,其他类型均不支持。 float -> int 会去掉小数点及后面的数值,仅保留整数部分。 int(-...

    libxd 评论0 收藏0

发表评论

0条评论

NervosNetwork

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<