Python基础数据类型

列表(list)和元组(tuple)

列表和元组,都是一个可以放置任意数据类型的有序集合

l = [1, 2, 'hello', 'world'] # 列表中同时含有 int 和 string 类型的元素
l
[1, 2, 'hello', 'world']
 
tup = ('jason', 22) # 元组中同时含有 int 和 string 类型的元素
tup
('jason', 22)
  • 列表是动态的,长度大小不固定,可以随意地增加、删减或者改变元素(mutable)。
  • 而元组是静态的,长度大小固定,无法增加删减或者改变(immutable)。
    如果想对已有的元组 做出改变,可以基于原有的元组,创建新的元组。
    比如,同样添加元素5
tup = (1, 2, 3, 4)
new_tup = tup + (5, ) # 创建新的元组 new_tup,并依次填充原元组的值
new _tup
(1, 2, 3, 4, 5)
 
l = [1, 2, 3, 4]
l.append(5) # 添加元素 5 到原列表的末尾
l
[1, 2, 3, 4, 5]

列表和元组 都支持 负数索引,-1表示最后一个元素,-2表示倒数第二个元素
都支持切片操作,需要注意的是切片操作:包含前面的数字,不包含后面的数字

l = [1, 2, 3, 4]
l[1:3] # 返回列表中索引从 1 到 2 的子列表
[2, 3]
 
tup = (1, 2, 3, 4)
tup[1:3] # 返回元组中索引从 1 到 2 的子元组
(2, 3) 

列表和元组之间的转换
通过 list()tuple() 函数相互转化:

list((1, 2, 3))
[1, 2, 3]
 
tuple([1, 2, 3])
(1, 2, 3)

支持的函数

l = [3, 2, 3, 7, 8, 1]
l.count(3) 
2
l.index(7)
3
l.reverse()
l
[1, 8, 7, 3, 2, 3]
l.sort()
l
[1, 2, 3, 3, 7, 8]
tup = (3, 2, 3, 7, 8, 1)
tup.count(3)
2
tup.index(7)
3
list(reversed(tup))
[1, 8, 7, 3, 2, 3]
sorted(tup)
[1, 2, 3, 3, 7, 8]

count(item) 表示统计 列表/元组 中 item出现的次数
index(item) 表示返回 列表/元组 中 第一次出现item的索引
list.reverse()list.sort() 表示 原地倒转列表 和 排序
reversed()sorted() 同样也会翻转 和 排序,但是会返回新的,原有的不变

字典(dict)和集合(set)

字典的创建方式,下面四种相等

d1 = {'name': 'jason', 'age': 20, 'gender': 'male'}
d2 = dict({'name': 'jason', 'age': 20, 'gender': 'male'})
d3 = dict([('name', 'jason'), ('age', 20), ('gender', 'male')])
d4 = dict(name='jason', age=20, gender='male') 
d1 == d2 == d3 ==d4
True

集合的创建方式

s1 = {1, 2, 3}
s2 = set([1, 2, 3])
s1 == s2
True

集合set不支持索引操作,想要判断一个元素是否在dict或set中,可以使用 value in dict/set来判断

s = {1, 2, 3}
1 in s
True
10 in s
False
d = {'name': 'jason', 'age': 20}
'name' in d
True
'location' in d
False

字典和集合的 增/删/改 操作:

d = {'name': 'jason', 'age': 20}
d['gender'] = 'male' # 增加元素对'gender': 'male'
d['dob'] = '1999-02-01' # 增加元素对'dob': '1999-02-01'
d
{'name': 'jason', 'age': 20, 'gender': 'male', 'dob': '1999-02-01'}
d['dob'] = '1998-01-01' # 更新键'dob'对应的值 
d.pop('dob') # 删除键为'dob'的元素对
'1998-01-01'
d
{'name': 'jason', 'age': 20, 'gender': 'male'}
 
s = {1, 2, 3}
s.add(4) # 增加元素 4 到集合
s
{1, 2, 3, 4}
s.remove(4) # 从集合中删除元素 4
s
{1, 2, 3}

字典的排序

d = {'b': 1, 'a': 2, 'c': 10}
d_sort_by_key = sorted(d.items(), key = lambda x: x[0])
d_sort_by_value = sorted(d.items(), key = lambda x: x[1]) 
d_sorted_by_key
[('a', 2), ('b', 1), ('c', 10)]
d_sorted_by_value
[('b', 1), ('a', 2), ('c', 10)]

集合的排序

s = {3, 4, 2, 1}
sorted(s) # 对集合的元素进行升序排序
[1, 2, 3, 4]

注意:

d = {'name': 'jason', ['education']: ['Tsinghua University', 'Stanford University']}

使用列表list作为key,在dict是不允许的,因为list是个变化的值,dict中的key要求是不可变的,随着key的变化,会有重复的key,所以list不可以作为字典dict中的key。元组tuple是可以的。

字符串

python中使用 单引号('') 双引号("") 三引号(''' '''或""" """) 是相同的

name = 'jason'
city = 'beijing'
text = "welcome to jike shijian"

在字符串中,单引号可以内嵌带引号的字符串。比如:

"I'm a student"

三引号字符串,则主要应用于多行字符串的情境,比如函数的注释等等。

def calculate_similarity(item1, item2):
    """
    Calculate similarity between two items
    Args:
        item1: 1st item
        item2: 2nd item
    Returns:
      similarity score between item1 and item2
    """

字符串中,使用转义字符

  • \\ 表示\
  • \' 表示单引号'
  • \" 表示双引号"

字符串常用操作
同样支持索引切片遍历

name = 'jason'
name[0]
'j'
name[1:3]
'as'
for char in name:
    print(char)   
j
a
s
o
n

需要注意,Python中的字符串是不可变的,下面操作会报错

s = 'hello'
s[0] = 'H'
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'str' object does not support item assignment

改变,可以使用下面两种方式

s = 'H' + s[1:]
s = s.replace('h', 'H')
  • string.strip(),表示去掉首尾的 空字符
  • string.strip(str),表示去掉首尾的 str 字符串;
  • string.lstrip(str),表示只去掉开头的 str 字符串;
  • string.rstrip(str),表示只去掉尾部的 str 字符串。

字符串的格式化

'person id: {}, name: {}'.format(id, name)

string.format() 就是所谓的格式化函数,大括号{}就是格式符为后面的真实变量预留位置

你可能感兴趣的:(Python基础数据类型)