课节2: Python编程基础
作业二:Python编程基础(二)
课程地址:https://aistudio.baidu.com/aistudio/education/group/info/7073
## 文章目录
字符串进阶
索引,切片
字符串一些函数:
字符串的格式化输出
一种可读性更好的方法 f-string
list进阶
列表每一项的操作
生成器
总结
## 字符串进阶
**索引,切片**

切片的语法:[起始:结束:步长] 字符串[start: end: step] 这三个参数都有默认值,默认截取方向是从左往右的 start:默认值为0; end : 默认值未字符串结尾元素; step : 默认值为1;如果切片步长是负值,截取方向则是从右往左的。
**字符串常用函数:**
```python
string = '人生苦短 我用python'
#find() 检测字符串是否包含,返回该字符串位置,如果不包含返回-1
string.find('python') #返回值:7
string.find('我')#返回值:5,这里需要注意下:空格也是一个字符。我前面有个空格,所以我位置是5
string.find('a')#返回值:-1,并不包含在字符串string中,如果不包含返回-1
#index() 检测字符串是否包含指定的字符,并返回开始的索引值,如果不包含会报错
string.index('python')#返回值:7
string.index('我')#返回值:5
#string.index('a')#字符串string不包含a,出现报错
#len() 返回字符串长度,以0开始计算
len(string) #返回值:13
#count() 收集指定字符在字符串中出现的次数
string.count("o") #返回值:1, o字符在'人生苦短 我用python'中存在一个。
#replace() 替换字符串
string.replace('python','PYTHON')#把小写的python替换成大写的PYTHON
string.replace('苦','ku')#把苦替换成ku
#split() 字符串切割
string.split(' ') #以列表的形式返回['人生苦短', '我用python'] ,'人生苦短 我用python'被空格切割掉
#upper() 将所有的字符转换为大写
string.upper() #返回值为 '人生苦短 我用PYTHON'
string.lower()#将所有字符转换为小写
string.title()#首字母转换为大写
#center() 返回一个原字符串居中,并以空格填充至长度宽度的新字符串
string .center(80) #返回值: ( 人生苦短 我用Python) 其字符串两头被空格填充
#join() 在字符串后面插入一个指定字符,构造一个新的字符串
```
**字符串的格式化输出**

**一种可读性更好的方法 f-string**
```python
name = 'Molly'
hight = 170.4
score_math = 95
score_english = 89
print(f"大家好!我叫{name},我的身高是{hight:.3f} cm, 数学成绩{score_math}分,英语成绩{score_english}分")
```
## list进阶
```python
list.append(obj)#在列表结尾添加新的对象
list.count(obj)#统计某个元素在列表中出现的次数
list.extend(obj)#在列表末尾一次性追加另一个序列的多个值(用新列表扩展原列表)
list.index(obj)#从列表中找出某个值第一个匹配项的索引位置
list.insert(index,obj)#将对象插入列表
list.pop([index=-1])#移除列表中的一个元素(默认为最后一个元素),并返回该元素
list.remove(obj)#移除列表中某个值得第一个匹配项
list.reverse()#反向列表中的元素
list.sort(key = None, reverse = False)#对原列表进行排序
list.clear()#清空列表
list.copy()#复制列表
```
**生成器**
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。
```python
L = [x * x for x in range(10)]
g = (x * x for x in range(10))
next(g)
g = (x * x for x in range(10))
for n in g:
print(n)
```
## 作业二:Python编程基础(二)
**按要求补全下列代码:**
1. 选取列表的第2到第5项,并打印(从0开始计数,即取出c d e f)
```python
words = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
# 选取第2-5项,并打印
print(words[2:6])
```
2.2. 使用列表生成式的方法,根据 list1 生成 list2
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
list2 = [100, 200, 300, 400, 500, 600, 700, 800]
```python
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
# 列表推导式生成list2
list2 = []
for i in range(len(list1)):
if list1[i]>0:
list1[i] = list1[i] * 100
list2.append(list1[i])
print(list2)
```
3.3. 把下列字符串按下划线('_')划分成若干个片段
string1 = 'this_is_a_sample'
生成按'_'划分的字符串列表,即下列内容
['this', 'is', 'a', 'sample']
```python
string1 = 'this_is_a_sample'
# 按'_'划分string1
string1.split('_')
```
笔记好认真,666