【Python】入门学习笔记——元组、列表、字典介绍、转换及遍历


软件使用:Pycharm
编辑日期:2022.9.25
编辑人:Aria


一、Python变量赋值

(一)多变量同时赋同一个值

a = b = c = 1
print(a,b,c)

输出结果:
在这里插入图片描述

(二)多变量同时赋不同值

a, b, c = 1, 2, "john"
print(a,b,c)

输出结果
在这里插入图片描述
两个整型对象 1 和 2 分别分配给变量 a 和 b,字符串对象 “john” 分配给变量 c。

二、Python数据类型

(一)数字

  • int(有符号整型)
  • long(长整型,也可以代表八进制和十六进制)
  • float(浮点型)
  • complex(复数)
    在这里插入图片描述
    注意:long 类型只存在于 Python2.X 版本中,在 2.2 以后的版本中,int 类型数据溢出后会自动转为long类型。在 Python3.X 版本中 long 类型被移除,使用 int 替代。

(二)字符串

字符串或串(String)是由数字、字母、下划线组成的一串字符。

  • 从左到右索引默认0开始的,最大范围是字符串长度少1
  • 从右到左索引默认-1开始的,最大范围是字符串开头
    [头下标:尾下标] 如 s[1:5] 截取出来的内容含头不含尾巴
s = 'abcdef'
print(s[1:5])

输出结果为 bcde ,不包含5 f

此外 ,Python 列表截取可以接收第三个参数,参数作用是截取的步长,如s[1:5:2],截取s中的1-5的内容,步长为2(间隔一个位置)

s = 'abcdef'
print(s[1:5])
print(s[1:5:2])

输出结果为bd ([1:5]截取内容为bcde,步长为 2,因此删除c和e)
在这里插入图片描述

(三)列表

list = ['runoob', 786, 2.23, 'john', 70.2]
tinylist = [123, 'john']

print(list )  # 输出完整列表
print(list[0])   # 输出列表的第一个元素
print(list[1:3] )  # 输出第二个至第三个元素
print(list[2:] )  # 输出从第三个开始至列表末尾的所有元素
print(tinylist * 2 )   # 输出列表两次
print(list + tinylist )  # 打印组合的列表

输出结果:
[‘runoob’, 786, 2.23, ‘john’, 70.2]
runoob
[786, 2.23]
[2.23, ‘john’, 70.2]
[123, ‘john’, 123, ‘john’]
[‘runoob’, 786, 2.23, ‘john’, 70.2, 123, ‘john’]
注意: print(tinylist * 2 ) 输出结果为同一个列表。
在这里插入图片描述

(三)元组

元组是另一个数据类型,类似于 List(列表)。

元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

tuple = ('runoob', 786, 2.23, 'john', 70.2)
tinytuple = (123, 'john')

print(tuple)   # 输出完整元组
print(tuple[0]) # 输出元组的第一个元素
print(tuple[1:3])  # 输出第二个至第四个(不包含)的元素
print(tuple[2:])  # 输出从第三个开始至列表末尾的所有元素
print(tinytuple * 2)  # 输出元组两次
print(tuple + tinytuple)  # 打印组合的元组

输出结果
(‘runoob’, 786, 2.23, ‘john’, 70.2)
runoob
(786, 2.23)
(2.23, ‘john’, 70.2)
(123, ‘john’, 123, ‘john’)
(‘runoob’, 786, 2.23, ‘john’, 70.2, 123, ‘john’)

注意: print(tinytuple * 2) # 输出元组两次,最后输出结果为同一个元组(),

(三)字典

dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"

tinydict = {'name': 'runoob', 'code': 6734, 'dept': 'sales'}
print( dict['one'])       # 输出键为'one' 的值
print(dict[2] )              # 输出键为 2 的值
print(tinydict)           # 输出完整的字典
print (tinydict.keys())     # 输出所有键
print (tinydict.values())    # 输出所有值
print(dict)

字典用"{ }"标识。字典由索引(key)和它对应的值value组成。即dict{key1:values1}、dict{key1:values1,key2:values2}。同时,一个字典中多元素,也是通过,进行分开。
列表是有序的对象集合,字典是无序的对象集合。
即:字典当中的元素是通过键来存取的,而不是通过偏移存取(非位置)。

(四)对比

tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]

list[2] = 1000     # 列表中是合法应用

print(list)
print(tuple[2])

list[2] 表示列表中对应位置2的元素,可赋值。
tuple[2]表示元组中对应的位置2的元素,但是不可赋值。
因此,可使用list[2] = 1000;而 tuple[2] = 100会报错。
输出结果:
在这里插入图片描述

(五)转换

有时候,需要对数据内置的类型进行转换,数据类型的转换,只需将数据类型作为函数名即可。

以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。
在这里插入图片描述
注意:
1.dict(d) 创建一个字典。d 必须是一个序列 (key,value)元组。
2.tuple(s) 将序列 s 转换为一个元组

1.转化成字符串

fruits = ('apple', 'banana', 'orange')
# 元组转换为字符串:
print(fruits.__str__())
fruit_list = ['apple', 'banana', 'orange']

# 列表转换为字符串:
print(str(fruit_list))

2.字典、元组、列表之间的转换

  • 字典转化成元组或列表 (可行)
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tup = tuple(dict)   # 将字典的key转换为元组:
tupval = tuple(dict.values()) # 将字典的value转换为元组:
lis = list(dict) #将字典的key转换成列表
lisval = list(dict.values()) #将字典的value转换成列表
print(dict)
print(tup)
print(tupval)
print(lis)
print(lisval)

tupkey = tuple(dict.keys()) # 将字典的key转换为元组;
liskey = list(dict.keys()) #将字典的key转换成列表;
print(tupkey)
print(liskey)

输出结果:
{‘one’: ‘This is one’, 2: ‘This is two’}
(‘one’, 2)
(‘This is one’, ‘This is two’)
[‘one’, 2]
[‘This is one’, ‘This is two’]
(‘one’, 2)
[‘one’, 2]
发现直接字典转化成元组或者列表,输出的结果为其索引Key

  • 列表转化成字典 (不可行)
tinylist = [123, 'john']
dic = dict(tinylist) #将列表转换成字典
print(dic)

报错,因为dict(d) 创建一个字典。d 必须是一个序列 (key,value)元组。

  • 元组转化成字典 (不可行)
tup = ('runoob', 786, 2.23, 'john', 70.2)
dic = dict(tup) #将无序列 (key,value)的元组 转换成字典
print(dic)

报错,因为tup元组不存在序列。

  • 元组转换成列表 (可行)
tuple = ('runoob', 786, 2.23, 'john', 70.2)
lis = list(tuple)

print(tuple)
print(lis)
  • 列表转换成元组 (可行)
lis = ['runoob', 786, 2.23, 'john', 70.2]
tup = tuple(lis)

print(lis)
print(tup)

因此元组、列表、字典之间的转换关系如下:
在这里插入图片描述

  • 列表、元组转字典可能有其他方法,本文中在不存在序列 (key,value)元组情况下,不支持转换。
  • [ ]

3.字符串转换成字典、元组、列表


#将字符串转换为元组:
str = "(1,2,3)"
print(tuple(eval(str)))

#将字符串转换为列表:
str = "(1,2,3)"
print(list(eval(str)))

#将字符串转换为字典:
str1 = "{'a':1 ,'b',2}"
print(dict(eval(str1)))

结果:
(1, 2, 3)
[1, 2, 3]

  • #将字符串转换为字典:报错,需要重新查找代码。

4.特殊情况下的字典与元组、列表间的转换(不完整,待修改)

字典类似于散列,列表类似于链表,元组类似于列表只是元素无法改变。所以,要把散列转换为链表而顺序不变是不可行的。但可以借助于有序字典OrderedDict,有序字典是字典的子类,它可以记住元素添加的顺序,从而得到有序的字典。有序字典这里就不深入探讨,给出普通字典的例子参考,代码如下:

import collections

data = [('a',1),('b',3),('c',2)]
#按数据中key值的大小排序
od = collections.OrderedDict(sorted(data,key=lambda s:s[0]))
print(od)

#按数据中value值的大小排序
os = collections.OrderedDict(sorted(data,key=lambda s:s[1]))
print(os)

输出结果:
OrderedDict([(‘a’, 1), (‘b’, 3), (‘c’, 2)])
OrderedDict([(‘a’, 1), (‘c’, 2), (‘b’, 3)])
部分代码可参考本文的 三(二)多value的字典转化成元组

三、实际操作

(一)元组、列表、字典的遍历

1.元组的遍历

fruits=("apple","banana","orange")
for i in range(len(fruits)):
    print(fruits[i])


print(fruits[0])
print(fruits[1])
print(fruits[2])
print(len(fruits))
print(range(len(fruits)))

输出结果
apple
banana
orange
apple # print(fruits[0])
banana # print(fruits[1])
orange # print(fruits[2])
3 # print(len(fruits))
range(0, 3) # print(range(len(fruits)))

PS: 元组的遍历借助 range() 函数,基本思想是通过元组的长度使用for循环进行遍历。
如过再输出print(fruits[3]) 会报错,因为不存在,(0,3)含头不含尾。

  • 此内容需要补充len()、range()的知识。

2.列表的遍历

列表的遍历可以直接使用for循环,也可以借助 range() 函数:

# 直接遍历
fruit_list1 = ['apple', 'banana', 'orange']
for fruit1 in fruit_list1:
    print(fruit1)

# 借助range()函数进行遍历
name_list2 = ['Aria', '小明', '小红']
for i in range(len(name_list2)):
    print(name_list2[i])

注意:区别元组与列表的区别,元组也可直接读取(列表的遍历可以直接使用for循环,元组也可以),可能是Python版本区别。
如:

# 直接遍历
fruits=("apple","banana","orange")
for fruit1 in fruits:
    print(fruit1)

能够运行。

3.字典的遍历

fruit_dict = {'apple':1, 'banana':2, 'orange':3}
for key in fruit_dict:
    print(fruit_dict[key])

(二)多value的字典转化成元组

#失败案例
dic = {7: [1,2,3],8: [4,5,6], 9: [10,11]}
my_list = list(zip(dic.keys(),dic.values()))
print(my_list)

#正确操作
my_list2 = []
for key,val in dic.items():
    for va in val:
        my_list2.append((key,va))
print(my_list2)

输出结果为:
[(7, [1, 2, 3]), (8, [4, 5, 6]), (9, [10, 11])]
[(7, 1), (7, 2), (7, 3), (8, 4), (8, 5), (8, 6), (9, 10), (9, 11)]


参考:

1.CSDN文章,Python中元组、列表、字典的遍历和相互转化
2.菜鸟教程,Python基础教程
3.CSDN文章,python字典转化为元组
4.CSDN文章,Python——有序字典 (OrderedDict)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值