大数据Python基础——第三章 字符串加列表练习

目录

字符串

列表


字符串

一.什么是字符串

字符串或串(String)是由数字、字母、下划线组成的一串字符;它是编程语言中表示文本的数据类型;Python程序中的字符串在计算机内存中,统一使用unicode编码,当需要保存到硬盘或者需要传输的时候,就转化为UTF-8编码。

二.字符串中常用函数和方法

str.upper() :转换字符串中所有的字母为大写

str.lower():转换字符串中所有的字母为小写

str.strip():在字符串上删除字符串开头和结尾的字符

str.split():通过指定的分隔符对字符串进行切片,返回列表类型的数据

str.split():num=string.split(str))以str为分隔符截取字符串将字符串分割为列表

str.join(seq):以指定字符串为分隔符,将seq中所有的元素合并为一个新的字符串

str.find():检测字符串中是否包含子字符串str,返回下标

str.replace(str1,str2):把字符串中的str1替换成str2

isdigit():如果字符串只包含数字则返回True,否则返回Flase

三.字符串拼接

方法一:使用“+”连接字符串

方法二:使用逗号连接字符串

方法三:使用%连接字符串

方法四:使用join函数连接字符串

四.字符串的查找方法

使用index或find查找:

strs = 'hello world'
print(strs.index('o'))
print(strs.find('o'))
得出结果:
4
4
区别:找不到指定字符的话,index返回报错,find找不到返回-1

五.列表合并字符串

lists = ['hello','world','python']
print(','.join(lists))
print('|'.join(lists))
得出结果:
hello,world,python
hello|world|python

六.字符串替换

strs = 'jkcksjfjshfjsncjsbd  qw  l  \n;hdaj;g'
print(strs.replace('j','s'))
得出结果(把j替换成s):
skckssfsshfssncssbd  qw  l  
;hdas;g

七.字符串判断是否存在

strs = 'hello world'
if 'h' in strs:
    print(123)
得出结果:
123
判断字符串中是否存在某些字母,不存在则打印不出来。

八.字符串去重

思路:通常先转为集合,再转回到字符串

strs = 'hello world'
print(set(strs))
得出结果:
{'h', 'l', 'w', 'd', 'o', ' ', 'r', 'e'}
缺点:因为集合没有顺序,所以即便去了重,拼接回去之后也不是原来的字符串了
转回字符串可以使用第五步的列表合并字符串
得出结果:
el hdrow

九.统计某元素出现的次数

strs = 'hello world'
print(strs.count('h'))
得出结果:
1

十.字符串拆分

print('1,2,3,4,5'.split(','))    拆分
print(','.join(['1', '2', '3', '4', '5']))    还原
得出结果:
['1', '2', '3', '4', '5']
1,2,3,4,5

列表

一.增

lists = [1,2,3,4,5]

方法一:

lists = [1,2,3,4,5]
lists.append(6)
print(lists)
得出结果:
[1, 2, 3, 4, 5, 6]
改变内存空间,新的值加到尾部

方法二:

lists.insert(2,'hello')
print(lists)
得出结果:
[1, 2, 'hello', 3, 4, 5]

方法三:

print(lists+[6])
得出结果:
[1, 2, 3, 4, 5, 6]
创建了一个新的内存空间,添加了一个新的值,不是改变原来的值,和之前的没有关系。

方法四:

lists.extend([6])
print(lists)
得出结果:
[1, 2, 3, 4, 5, 6]
改变之前的内存空间,加了一个值

二.删

lists = [1,2,3,4,5]

方法一:

a = lists.pop()起了一个取值的操作,根据下标来传值
print(lists)
print(a)
得出结果:
[1, 3, 4, 5]
2
排除最后一个元素,赋值给了变量a

方法二:

lists.remove(lists[1])根据取值来删除
print(lists)
得出结果:
[1, 3, 4, 5]

方法三:

del lists[1]
print(lists)
得出结果:
[1, 3, 4, 5]

方法四:

lists.clear()清空列表
print(lists)
得出结果:
[]

三.改

lists = [1,2,3,4,5]

print(lists)
lists[1] = 6
print(lists)
lists[1:3] = [5]用5顶替掉6,3
print(lists)
得出结果:
[1, 2, 3, 4, 5]
[1, 6, 3, 4, 5]
[1, 5, 4, 5]

四.查

思路:先遍历再查找

for i in lists:
    print(i)
得出结果:
1
2
3
4
5

遍历下标,下标从0 开始:

for i in range(len(lists)):
    print(lists[i])
得出结果:
1
2
3
4
5

五.用random取随机数

import random
print(random.randrange(1,100))    从1到99取随机数
print(random.choice([1,2,3,4,5]))    从列表中取随机数
a = [1,2,3,4,5]
random.shuffle(a)    打乱列表中的顺序
print(a)
得出结果:
46
4
[2, 5, 1, 3, 4]

六.多维列表

lists = [1,2,3,4,5,6]
lists1 = [[1,2],[3,4],[5,6]]
for i in lists:
    print(i)
for i in lists1:    每次循环输出其中的一个小列表
    print(i)
得出结果:
1
2
3
4
5
6
[1, 2]
[3, 4]
[5, 6]

for i in lists1:    两次遍历循环输出其中的所有数
    for ii in i:
        print(ii)
得出结果:
1
2
3
4
5
6

for a,b in lists1:
    print(a,b)
得出结果:
1 2
3 4
5 6

七.列表排序

方法一:

lists = [3,5,2,6,7,1,5]
print(sorted(lists))
print(sorted(lists,reverse =True))
得出结果:
[1, 2, 3, 5, 5, 6, 7]
[7, 6, 5, 5, 3, 2, 1]

方法二:

lists.sort()
print(lists)
lists.sort(reverse=True)
print(lists)
得出结果:
[1, 2, 3, 5, 5, 6, 7]
[7, 6, 5, 5, 3, 2, 1]

问题:输入次数,从一堆名字中随机点出对饮数量的名字,不得重复,如果输入次数大于名字数。

方法一: 

import random
while True:
    name1 = ['艾西雅','天川春人','凌濑美春','莉塞萝黛','利欧','天川春人','艾西雅','芙罗拉']
    n = int(input('请输入名字个数:'))
    if n > len(name1):
        print('只有{}名字,您输入的超过数量了'.format(len(name1)))
        continue
    for i in range():
        num = random.randrange(len(name1))
        data = name1.pop(num)
        print(data)

方法二:

import random
name1 =['艾西雅','天川春人','凌濑美春','莉塞萝黛','利欧','天川春人','艾西雅','芙罗拉']
while True:
    lists = []
    n = 0
    m = int(input('请输入名字个数:'))
    if m > len(name1):
        print('只有{}名字,您输入的超过数量了'.format(len(name1)))
        continue
    while True:
        name = random.choice(name1)
        if name not in lists:
            lists.append(name)
            print(name)
            n += 1
        if n ==m:
            break

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值