s1 = ''hello, world!''
s2 = '\n\hello, world!\\n'
print(s1, s2, end='')

s1 = '\141\142\143\x61\x62\x63'
s2 = '\u9a86\u660a'
print(s1, s2)

s1 = r''hello, world!''
s2 = r'\n\hello, world!\\n'
print(s1, s2, end='')
print('\n')
print('-----------------------------')
s1 = 'hello ' * 3
print(s1) # hello hello hello

拼接字符串

s2 = 'world'
s1 += s2
print(s1) # hello hello hello world
print('ll' in s1) # True
print('wor' in s1)
str2 = 'abc123456'

从字符串中取出指定位置的字符(下标运算)

print(str2[2]) # c
print(str2[2:5]) # c12
print(str2[2:]) # c123456
print(str2[2::2]) # c246
print(str2[::2]) # ac246
print(str2[::-1]) # 654321cba
print(str2[-3:-1]) # 45
str1 = 'hello, world!'

通过内置函数len计算字符串的长度

print(len(str1)) # 13

获得字符串首字母大写的拷贝

print(str1.capitalize()) # Hello, world!

获得字符串每个单词首字母大写的拷贝

print(str1.title()) # Hello, World!

获得字符串变大写后的拷贝

print(str1.upper()) # HELLO, WORLD!

从字符串中查找子串所在位置

print(str1.find('or')) # 8
print(str1.find('shit')) # -1

与find类似但找不到子串时会引发异常

print(str1.index('or'))

print(str1.index('shit'))

检查字符串是否以指定的字符串开头

print(str1.startswith('He')) # False
print(str1.startswith('hel')) # True

检查字符串是否以指定的字符串结尾

print(str1.endswith('!')) # True

将字符串以指定的宽度居中并在两侧填充指定的字符

print(str1.center(50, '*'))

将字符串以指定的宽度靠右放置左侧填充指定的字符

print(str1.rjust(50, ' '))
str2 = 'abc123456'

检查字符串是否由数字构成

print(str2.isdigit()) # False

检查字符串是否以字母构成

print(str2.isalpha()) # False

检查字符串是否以数字和字母构成

print(str2.isalnum()) # True
str3 = ' jackfrued@126.com '
print(str3)

获得字符串修剪左右两侧空格之后的拷贝

print(str3.strip())

a, b = 5, 10
print('%d * %d = %d' % (a, b, a * b))

a, b = 5, 10
print('{0} * {1} = {2}'.format(a, b, a * b))

a, b = 5, 10
print(f'{a} * {b} = {a * b}')
list1 = [1, 3, 5, 7, 100]
print(list1) # [1, 3, 5, 7, 100]

乘号表示列表元素的重复

list2 = ['hello'] * 3
print(list2) # ['hello', 'hello', 'hello']

计算列表长度(元素个数)

print(len(list1)) # 5

下标(索引)运算

print(list1[0]) # 1
print(list1[4]) # 100

print(list1[5]) # IndexError: list index out of range

print(list1[-1]) # 100
print(list1[-3]) # 5
list1[2] = 300
print(list1) # [1, 3, 300, 7, 100]

通过循环用下标遍历列表元素

for index in range(len(list1)):
print(list1[index])

通过for循环遍历列表元素

for elem in list1:
print(elem)

通过enumerate函数处理列表之后再遍历可以同时获得元素索引和值

for index, elem in enumerate(list1):
print(index, elem)

print('-----------------------------')

如何向列表中添加元素以及如何从列表中移除元素

list3 = [1, 3, 5, 7, 100, 200]

添加元素

print(list3)
list3.insert(1, 400)
print(list3)

合并两个列表

list3 += [1000, 2000]
print(list3)

先通过成员运算判断元素是否在列表中,如果存在则删除元素

if 3 in list3:
list3.remove(3)
if 1234 in list3:
list3.remove(1234)
print(list3)

从指定位置删除元素

list3.pop(0)
list3.pop(len(list3)-1)
print(list3)

import sys

列表也可以做切片操作,通过切片操作我们可以实现对列表的复制或者将列表中的一部分取出来创建出新的列表,

fruits = ['grape', 'apple', 'strawberry', 'waxberry']
fruits += ['pitaya', 'pear', 'mango']
print(fruits)

列表切片

fruits2 = fruits[1:4] # 'apple', 'strawberry', 'waxberry'
print(fruits2)

可以通过完整切片操作来复制列表

fruits3 = fruits[:]
print(fruits3)

可以通过反向切片操作来获得倒转后的列表的拷贝

fruits5 = fruits[::-1]
print(fruits5)
print('---------------排序-----------------------')
list1 = ['orange', 'apple', 'zoo', 'internationalization', 'blueberry']
list2 = sorted(list1)

sorted函数返回列表排序后的拷贝不会修改传入的列表

函数的设计就应该像sorted函数一样尽可能不产生副作用

list3 = sorted(list1, reverse=True)

通过key关键字参数指定根据字符串长度进行排序而不是默认的字母表顺序

list4 = sorted(list1, key=len)
print(list1)
print(list2)
print(list3)
print(list4)

给列表对象发出排序消息直接在列表对象上进行排序

list1.sort(reverse=True)
print(list1)

使用列表的生成式语法来创建列表

f = [x for x in range(1, 10)]
print(f)
f = [x + y for x in 'ABCDE' for y in '1234567']
print(f)

f = [x ** 2 for x in range(1, 1000)]
print(sys.getsizeof(f)) # 查看对象占用内存的字节数
print(f)

请注意下面的代码创建的不是一个列表而是一个生成器对象

通过生成器可以获取到数据但它不占用额外的空间存储数据

每次需要数据的时候就通过内部的运算得到数据(需要花费额外的时间)

f = (x ** 2 for x in range(1, 1000))
print(sys.getsizeof(f)) # 相比生成式生成器不占用存储数据的空间
print(f)
for val in f:
print(val)

列表解析:根据已有列表,高效创建新列表的方式。

  列表解析是Python迭代机制的一种应用,它常用于实现创建新的列表,因此用在[]中。

语法:

  [expression for iter_val in iterable]

  [expression for iter_val in iterable if cond_expr]

1. 要求:列出1-10所有的数字之和的平方

1. 直接的方法:

l = []
for i in range(1, 11):
l.append(i ** 2)
print(l)

2. 使用列表解析

l = [i ** 2 for i in range(1, 11)]
print(l)

2. 要求:列出1~10中大于等于4的数字的平方

2.1.1:使用普通方法:

for i in range(1, 11):
if i > 4:
print(i ** 2)

2.1.2 : 使用列表:

l = []
for i in range(1, 11):
if i > 4:
l.append(i ** 2)
print(l)

使用列表解析:

  [expression for iter_val in iterable if cond_expr]

l = [i ** 2 for i in range(1, 11) if i > 4]
print(l)

补充:

f = [x + y for x in 'ABCDE' for y in '1234567']
print(f)
test = []
for x in 'ABCDE':
for y in '1234567':
test.append(x+y)
print(test)

使用集合

创建集合的字面量语言

set1 = {1, 2, 3, 3, 3, 2}
print(set1)
print('Length:', len(set1))

创建集合的构造器语法

set2 = set(range(1, 10))
set3 = set((1, 2, 3, 3, 2, 1))
print(set2, set3)

创建集合的推导式语法(推导式也可以用于推导集合)

set4 = {num for num in range(1, 100) if num % 3 == 0 or num % 5 == 0}
print('set4:', set4)
set5 = {1}
for num in range(1, 100):
if num % 3 == 0 or num % 5 == 0:
set5.add(num)
set5.remove(1)
print('set5', set5)

添加元素 删除元素

set1.add(4)
print(set1)
set2.update([11, 12])
print(set2)
set2.discard(5)
print(set2)
if 4 in set2:
set2.remove(4)
print(set2)

集合的成员、交集、并集、差集等运算

print('操作前的集合:')
print('set1:', set1)
print('set2:', set2)

交集:

print(set1 & set2)
print(set1.intersection(set2))

并集

print(set1 | set2)

print(set1.union(set2))

差集

print(set1 - set2)

print(set1.difference(set2))

判断子集和超集

print(set2 <= set1)

print(set2.issubset(set1))

print(set3 <= set1)

print(set3.issubset(set1))

print(set1 >= set2)

print(set1.issuperset(set2))

print(set1 >= set3)

print(set1.issuperset(set3))

元组:元组与列表类似也是一种容器数据类型,可以用一个变量(对象)来存储多个数据,

不同之处在于元组的元素不能修改,在前面的代码中我们已经不止一次使用过元组了。顾名思义,

我们把多个元素组合到一起就形成了一个元组,所以它和列表一样可以保存多条数据。

t = ('yamon', 24, True, '河北邯郸')
print(t)

获取元组内的内容

print(t[0])
for i in t:
print(i)

重新赋值

t = ('陈亚萌' ,24 ,True , '天津')
print(t)

将元组转化为列表:

person = list(t)
print(person)

利用列表修改元素,元组不允许修改元素

person[0] = 'yyh'
person[1] = 22
print(person)

列表转为元组

fruits_list = ['apple', 'banana', 'orange']
tuple=tuple(fruits_list)
print(tuple)

字典是另一种可变容器模型,Python中的字典跟我们生活中使用的字典是一样一样的,它可以存储任意类型对象,

与列表、集合不同的是,字典的每个元素都是由一个键和一个值组成的“键值对”,键和值通过冒号分开。

下面的代码演示了如何定义和使用字典。

创建字典的字面量语法

scores = {'骆昊': 95, '白元芳': 78, '狄仁杰': 82}
print(scores)

创建字典的构造器语法

items1 = dict(one=1, two=2, three=3, four=4)

通过zip函数将两个序列压成字典

items2 = dict(zip(['a', 'b', 'c'], '123'))

创建字典的推导式语法

items3 = {num: num ** 2 for num in range(1, 10)}
print(items1, items2, items3)

通过键可以获取字典中对应的值

print(scores['骆昊'])
print(scores['狄仁杰'])

对字典中所有键值对进行遍历

for key in scores:
print(f'{key}: {scores[key]}')

更新字典中的元素

scores['白元芳'] = 65
scores['诸葛王朗'] = 71
scores.update(冷面=67, 方启鹤=85)
print(scores)
if '武则天' in scores:
print(scores['武则天'])
print(scores.get('武则天'))

get方法也是通过键获取对应的值但是可以设置默认值

print(scores.get('武则天', 60))

删除字典中的元素

print(scores.popitem())
print(scores.popitem())
print(scores.pop('骆昊', 100))

清空字典

scores.clear()
print(scores)

python 字典元组集合字符串的更多相关文章

  1. python之字符串,列表,字典,元组,集合内置方法总结

    目录 数字类型的内置方法 整型/浮点型 字符串类型的内置方法 列表的内置方法 字典的内置方法 元组的内置方法 集合类型内置方法 布尔类型 数据类型总结 数字类型的内置方法 整型/浮点型 加 + 减 - ...

  2. 流畅的python 字典和集合

    介绍 dict 类型不但在各种程序里广泛使用,它也是 Python 语言的基石.模块的命名空间.实例的属性和函数的关键字参数中都可以看到字典的身影.跟它有关的内置函数都在 __builtins__._ ...

  3. day3学python 字典+列表集合+文件读取

    字典+列表集合+文件读取 字典示例 ************************ 各地食品的三级菜单************************* 1.使用字典嵌套字典 2.采用死循环思路 3 ...

  4. Python字典和集合

    Python字典操作与遍历: 1.http://www.cnblogs.com/rubylouvre/archive/2011/06/19/2084739.html 2.http://5iqiong. ...

  5. Python字典和集合的内部实现

    1. 哈希表(Hash tables) 在Python中,字典是通过哈希表实现的.也就是说,字典是一个数组,而数组的索引是经过哈希函数处理后得到的.哈希函数的目的是使键均匀地分布在数组中.由于不同的键 ...

  6. Python 字典dict 集合set

    字典dict Python内置字典,通过key-value进行存储,字典是无序的,拓展hash names = ['Michael', 'Bob', 'Tracy'] scores = [95, 75 ...

  7. Python 字典和集合基于哈希表实现

    哈希表作为基础数据结构我不多说,有兴趣的可以百度,或者等我出一篇博客来细谈哈希表.我这里就简单讲讲:哈希表不过就是一个定长数组,元素找位置,遇到哈希冲突则利用 hash 算法解决找另一个位置,如果数组 ...

  8. 转:Python字典与集合操作总结

    转自:http://blog.csdn.net/business122/article/details/7537014 一.创建字典 方法①: >>> dict1 = {} > ...

  9. Python字典、集合之高山流水

    字典dict字典是由大括号{键:值}组成.字典是无序的.字典的键必须是不可变数据类型.不能使用列表作为键,但可以使用元祖作为字典的键.例如: dict_ = {"test":&qu ...

随机推荐

  1. Form表单中method="post/get'的区别

    Form提供了两种数据传输的方式--get和post.虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的影响.虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一 ...

  2. [LC] 255. Verify Preorder Sequence in Binary Search Tree

    Given an array of numbers, verify whether it is the correct preorder traversal sequence of a binary ...

  3. How Cocoa Beans Grow And Are Harvested Into Chocolate

    What is Cocoa Beans Do you like chocolate? Most people do. The smooth, brown candy is deliciously sw ...

  4. cnn可视化 感受野(receptive field)可视化

    网址: https://befreeroad.github.io/#/editor 参考: http://ethereon.github.io/netscope/#/editor 在此基础上添加 感受 ...

  5. php启动后netstat看不到9000端口的问题

    https://www.cnblogs.com/jonsea/p/5522018.html     php-fpm配置文件详解 其实就是PHP配置文件改一个参数 listen = 127.0.0.1: ...

  6. 调用支付JSAPI缺少参数:sign

    微信jsapi调用微信支付时报 :调用支付JSAPI缺少参数:sign 这个问题我查了很久,最后把前端的代码也拿过来看来,发现前端 sign的参数名传错了~~~~~~~前后端分离很容易出现这种问题,对 ...

  7. 文本输入框input将输入转换为统一大小写

    转载地址:http://blog.csdn.net/yieryi_/article/details/52078596 文本输入框input将输入转换为统一大小写,通常有两种方法:JS和CSS方法. 1 ...

  8. php中级程序员的进化标准

    1 熟悉linux/unix操作系统,能够写些shell脚本2 能够搭建lamp环境3 熟练使用php,了解或使用过php扩展模块,使用过开源的php框架4 熟悉缓存技术,包括http协议的缓存,利用 ...

  9. cs231n spring 2017 lecture15 Efficient Methods and Hardware for Deep Learning

    讲课嘉宾是Song Han,个人主页 Stanford:https://stanford.edu/~songhan/:MIT:https://mtlsites.mit.edu/songhan/. 1. ...

  10. 使用框架结构之frameset

    首先,我希望在你的目录下,有4个网页,各自显示不同的内容. 如图所示: 1.html显示"火影忍者" 2.html显示"英雄联盟" 3.html显示" ...