小甲鱼:Python学习笔记002_数组_元组_字符串

时间:2023-03-08 17:07:19
小甲鱼:Python学习笔记002_数组_元组_字符串

创建普通数组

>>> member=["山东黄金","九阳股份"]

>>> member

['山东黄金', '九阳股份']

创建混合数组(数组中存放各种类型的数据)

>>> mix=[1,2.3,"520",["Haha"]]

>>> mix

[1, 2.3, '520', ['Haha']]

创建一个空数组

>>> empty=[]

>>> empty

[]

向数组中添加元素

append(), 追加一个元素到数组末尾

extend(), 用一个列表扩展另一个列表,也是将元素追加到末尾

insert(), 将一个元素插入到数组指定的位置

>>> member.append("深圳机场")

>>> len(member)

3

>>>

>>> member.extend(["招商轮船","平安银行"])

>>> member

['山东黄金', '九阳股份', '深圳机场', '招商轮船', '平安银行']

>>> len(member)

5

>>> member.insert(2,"沱牌舍得")

>>> member

['山东黄金', '九阳股份', '沱牌舍得', '深圳机场', '招商轮船', '平安银行']

>>>

获取数组中某个元素

>>> member[1]

'九阳股份'

>>>

>>> member[1] = "九阳股份-九阳神功"

>>> member

['山东黄金', '九阳股份-九阳神功', '沱牌舍得', '深圳机场', '招商轮船', '平安银行']

>>>

删除数组中的元素

remove(),删除指定名称元素, 如果指定的值不存在,会报错

del  ,它是一个语句,不是方法,可以删除整个数组,也可以删除指定位置的元素

pop() ,从数组中删除最后一个元素,并返回这个值,也可以去除指定下标的元素

>>> member.remove("山东黄金")

>>> member

['九阳股份-九阳神功', '沱牌舍得', '深圳机场', '招商轮船', '平安银行']

>>> del member[1]

>>> member

['九阳股份-九阳神功', '深圳机场', '招商轮船', '平安银行']

>>>

>>>

>>> last = member.pop()

>>> member

['九阳股份-九阳神功', '深圳机场', '招商轮船']

>>> last

'平安银行'

>>> item=member.pop(1)

>>> member

['九阳股份-九阳神功', '招商轮船']

>>> item

'深圳机场'

>>>

列表分片:  可以实现一次性获取多个元素

>>> member[0:1]  # 这个是拷贝出来的内容,原数组不变

['九阳股份-九阳神功']

>>> member

['九阳股份-九阳神功', '招商轮船']

>>>

>>> member[:1]    #下标为1之前的都获取到

['九阳股份-九阳神功']

>>> member[1:]   #从下标为1开始获取

['招商轮船']

>>> member[:]    #获取整个数组

['九阳股份-九阳神功', '招商轮船']

>>>

两个冒号是每隔多少个取

[1::2],从下标1开始,每隔2个取值

[::2],从下标0开始,每隔2个取值

典型的就是取100以内的奇偶数

# 列表切片例子

# 查找列表当中‘yang’元素出现的位置

name_list = ['huang','yang','zhang','li','qian','yang','hu','gao']
first_pos = 0

#统计‘yangw’出现的次数,根据次数循环找位置
for i in range(name_list.count('yang')):
    #下一次查找的子列表
    new_list = name_list[first_pos:]
    # 下一次查找的位置
    next_pos = new_list.index('yang') + 1

    print ('Find Position:',first_pos + new_list.index('yang'))

    first_pos += next_pos

    '''
    #1   new_list = ['huang','yang','zhang','li','qian','yang','hu','gao']
         next_pos = 1 + 1
         first_pos = 0 + 2

    #2    new_list =['zhang','li','qian','yang','hu','gao']
         next_pos = 3 +1
         first_pos = 3 + 4

    '''

元素在不在数组中, 可以使用 in  或 not in

>>>

>>> "awei" not in member

True

>>> "招商轮船" in member

True

>>>

#指定元素出现的次数

>>> member.count("haha")

0

>>> member.count("招商轮船")

1

# 指定元素在数组中的位置

>>> member.index("招商轮船")

1

>>>

翻转数组

>>> member.reverse()

>>> member

['招商轮船', '九阳股份-九阳神功']

>>>

排序 sort ,它是一种归并排序

>>> member.sort()

>>> member

['九阳股份-九阳神功', '招商轮船']

>>>

>>> member.sort(reverse=True)

>>> member

['招商轮船', '九阳股份-九阳神功']

>>>

再次强调,

>>> member1=member[:]  #是一种数组的拷贝

>>> member1

['招商轮船', '九阳股份-九阳神功']

>>> member2=member   #不是拷贝,引用着同一个数组

>>> member2

['招商轮船', '九阳股份-九阳神功']

>>> member.sort()

>>> member1

['招商轮船', '九阳股份-九阳神功']

>>> member2

['九阳股份-九阳神功', '招商轮船']

>>>

元组tuple和数组是非常相近的,只是元组是不能被修改的

对于元组来说, 逗号是关键,小括号不一定非要有

>>> items=("九阳","大船","平安","黄金")

>>> items

('九阳', '大船', '平安', '黄金')

>>> items[2]

'平安'

>>> items[:1]

('九阳',)

>>> items[2:]

('平安', '黄金')

>>> items2=items[:]

>>> items2

('九阳', '大船', '平安', '黄金')

>>>

元组能不能变相改变呢,答案是可以的.

>>> items2 = items2[:1]+("白云山",)+items2[1:]

>>> items2

('九阳', '白云山', '大船', '平安', '黄金')

>>>

>>> str1= 'cxn ,wo yao cao ni !'

>>> str1

'cxn ,wo yao cao ni !'

>>> #取字符串的某个字符,直接跟数组一样,使用下标方式

>>> str1[1]

'x'

>>> #它也像元组一样,可以使用分片

>>> #它跟元组一样,也是不可改变的,我们可以利用切片的方式改变

>>> str2 = str1[:5]+"我插入进来了啊" + str1[5:]

>>> str2

'cxn ,我插入进来了啊wo yao cao ni !'

>>>

>>> #字符串的方式有很多

>>>

>>> # 1. 将字符串第一个字母改为大写

>>> str3="wo xiang ri nv ren !";

>>> str3.capitalize()

'Wo xiang ri nv ren !'

>>> str3

'wo xiang ri nv ren !'

>>>

>>> # 把整个字符串的所有字符改为小写

>>>

>>> str4=" I LIKE YOU"

>>> str4.casefold()

' i like you'

>>>

>>> #字符串居中,并使用空格填充至长度width的新字符串

>>>

>>> str4.center(20)

'     I LIKE YOU     '

>>>

>>> #返回sub在字符串中出现的次数,start end表示范围(可选)

>>> str4.count("e")

0

>>> # 对字符串进行编码

>>> str4="杨伟"

>>> str4.encode(encoding="utf-8",errors="strict")

b'\xe6\x9d\xa8\xe4\xbc\x9f'

>>>

>>> # 检查字符串是否以sub字符串结束,返回 True | False

>>>

>>> str4.endswith("伟")

True

>>> # endswith(sub [,start] [,end])方法

>>>

>>>

>>> #把字符串中的 tab符号(\t)转换为空格,如果不指定参数,默认空格是8

>>> #expandtabs([tabsize=8])

>>> str4="I\tlove\tyou"

>>> str4.expandtabs()

'I       love    you'

>>>

>>> #检测sub是否包含在字符串中,如果有返回索引值,否则返回-1

>>> #find(sub [,start] [,end])

>>> str4.find("you")

7

>>> #index(sub [,start][,end]),与find一样,不过如果sub不在sring中会抛异常

>>> str4.index("you")

7

>>> str4.index("ni")

Traceback (most recent call last):

File "<pyshell#55>", line 1, in <module>

str4.index("ni")

ValueError: substring not found

>>>

>>> # 有很多判断字符串的方法,以 is开头,这么不再说明

>>>

>>> # join(sub)  以字符串作为分隔符,插入到sub中所有的字符之间

>>> str4.join("123")

'1I\tlove\tyou2I\tlove\tyou3'

>>> # 使用join比起 字符串+的操作更节约内存开销

>>> a = ['a','b','c']
>>>
>>> b = ''.join(a)
>>> b
'abc'
>>>

>>> # lower()小写  , upper() 大写

>>> # ljust(width) 返回一个左对齐的字符串,并使用空格填充至width长度

>>>

>>> str4.ljust(20)

'I\tlove\tyou          '

>>>

>>> #lstrip() 去掉字符串左边的所有空格

>>> str4="    123456"

>>> str4

'    123456'

>>> str4.lstrip()

'123456'

>>>

>>> #rstrip() 去掉字符串右边的所有空格

>>>

>>> #partition(sub) 找到子字符串sub,把字符串分成3个元组(pre_sub,sub,fol_sub),r如果字符串中不包含sub,返回('原字符串',"","")

>>>

>>> str5=" ni hao ma ,qinqin"

>>> str5.partition("qin")

(' ni hao ma ,', 'qin', 'qin')

>>>

>>> # replace(old,new,[,count]) 字符串替换,如果指定count次,则替换不超过count次

>>>

>>> str5.replace("qin","exin")

' ni hao ma ,exinexin'

>>>

>>> ##有一些以r开始的方法,表示从右边开始查找等等,不再赘述

>>>

>>> #split(sep=None,maxsplit=-1) 不带参数默认以空格切分,返回数组

>>> str5.split()

['ni', 'hao', 'ma', ',qinqin']

>>> str5.split("q")

[' ni hao ma ,', 'in', 'in']

>>>

>>> # 去掉字符串前后空格

>>> #strip([chars]), chars参数可以定制删除的字符

>>>

>>> str5.strip();

'ni hao ma ,qinqin'

>>>

>>> #swapcase() 翻转字符串的大小写

>>>

>>># max(str) max(str) , 寻找字符串中的最大字符    min(str), 寻找字符串中的最小字符

>>> #字符串格式化

>>> #1,使用位置参数表示
>>> "{0} love {1}.{2}".format("I","fishc","com")
'I love fishc.com'

>>> #关键字参数  # 关键字参数必须指定谁的值是多少
>>> "{a} love {b}.{c}".format(a="I",b="fishc",c="com")
'I love fishc.com'

>>>
>>> # 位置参数和关键字参数也可以一起使用,但是位置参数必须在前面
>>>
>>> "{0} love {b}.{c}".format("I",b="fishc",c="com")
'I love fishc.com'
>>>
>>> #{}也是可以被转义的,它使用{}转义
>>>
>>> print("{{0}}".format("不打印"))
{0}
>>>

字符串格式化符号含义及转义字符含义
http://bbs.fishc.com/thread-39140-1-1.html
(出处: 鱼C论坛)

>>> # 字符串,数组,元组 都是可迭代对象
>>> # list() 是将可迭代的对象转换为数组
>>> a="12345"
>>> list(a)
['1', '2', '3', '4', '5']
>>> # tuple([iterable]),把一个可迭代对象转换为元组
>>> # str(obj) ,把一个对象转换为字符串
>>>
>>> # len(sub), 返回参数的长度
>>>
>>> len(a)
5
>>> #max(),返回序列或者参数集合中的最大值
>>> max(list(a))
'5'
>>> numbers=(1,4,-5,10)
>>> max(numbers)
10
>>> #min(), 与max()使用方式一样
>>> # 使用max()、min()方法,序列(数组、元组、字符串)的类型必须是一样的
>>>
>>> b=["1","2","3",4]
>>> max(b)
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
max(b)
TypeError: unorderable types: int() > str()
>>>
>>> b.pop()
4
>>> max(b)
'3'
>>> # sum(iterable[,start=0]) ,返回序列iterate和可选参数start的总和
>>>
>>> # 迭代器中也必须是相同类型,才能做相加操作
>>>
>>>
>>> # sorted(),排序
>>> sorted(numbers)
[-5, 1, 4, 10]
>>> # reversed() ,它返回的是迭代器对象
>>> reversed(numbers)
<reversed object at 0x02168ED0>
>>> list(reversed(numbers))
[10, -5, 4, 1]
>>>
>>> # enumerate(),枚举列表,结果是键值对形式组成的数组
>>>
>>> enumerate(numbers)
<enumerate object at 0x021710D0>
>>> list(enumerate(numbers))
[(0, 1), (1, 4), (2, -5), (3, 10)]
>>>
>>> # zip()方法,还是看例子就明白了
>>> a1 = [1,2,3,4,5,6]
>>> a2 = [3,4,5,6]
>>> zip(a1,a2)
<zip object at 0x021711C0>
>>> list(zip(a1,a2))
[(1, 3), (2, 4), (3, 5), (4, 6)]
>>>

元组与列表的区别:

元组是不可改变的,列表是可以改变的;

元组和列表之间是可以相互转换的, 元组转成列表使用 list(), 列表转成元组tuple()

元组一般就使用两个方法 index()和count() 方法.