列表相关操作及元组

一.列表:

1列表相关操作:

1)、数学运算符:+、*
列表1+列表2 -> 新列表中的元素是两个列表中元素的合并

list1 = [1, 2, 3]
list2 = ['张三', '李四']
print(list1 + list2)    #[1, 2, 3, '张三', '李四']

列表*N(正整数) -> 列表中的元素重复N次,并产生一个新的列表

list1 = [1, 2, 3]
print(list1 * 3)    # [1, 2, 3, 1, 2, 3, 1, 2, 3]

2)、比较运算符:== != 两个列表一模一样才相等 个数和顺序都一样

print([1, 2, 3] > [10, 20])  # false
# 比较的是列表内的元素大小,第一个和第一个比,只要有一个大了,则整个列表大

变量1 is 变量2 -> 判断地址是否相等

in or not in:

元素 in 列表 判断列表中是否存在指定的元素
元素 not in 列表 判断列表中是否不存在指定的元素

names = ['小明', '小花']
print('小花' in names)  # True

列表相关函数:
相关函数: len 、max 、min 、list、sum
1.len(序列)-- 获取序列的长度(元素的个数)
2.max/min 获取序列中元素的最大值、最小值
对序列的要求:1.序列中所有的元素的类型一致(数字看成一种类型)
2.元素本身支持比较大小的运算符
3.sum(数字序列) - 求序列中所有元素的和
4.list -> 把指定的数据转换成为列表 数据必须是序列序列
list(序列)

print(list('hello'))  # ['h', 'e', 'l', 'l', 'o']
print(list(range(10, 15)))  # [10, 11, 12, 13, 14]

2.列表相关方法

1.列表.acount()--计算某个元素在列表中出现的次数

names = ['曹操', '刘备', '赵云', '小乔', '貂蝉', '吕布', '司马懿', '诸葛亮', '小乔']
# 1.列表.count(元素):  -> 统计列表中指定元素的个数
print(names.count('赵云'))  # 1
print(names.count('小乔'))  # 2

2.列表.extend(序列) - 将序列中所有的元素都添加在列表的最后面
注意与append()区分 append是单个元素

names = ['曹操', '刘备', '赵云', '小乔', '貂蝉', '吕布', '司马懿', '诸葛亮', '小乔']
names.append('后裔')  # 将整个作为一个元素
print(names)  # ['曹操', '刘备', '赵云', '小乔', '貂蝉', '吕布', '司马懿', '诸葛亮', '小乔', '后裔']
names.extend('后裔')  # 将每一个字符作为一个元素
print(names)  # ['曹操', '刘备', '赵云', '小乔', '貂蝉', '吕布', '司马懿', '诸葛亮', '小乔', '后裔', '后', '裔']

3.列表.index() -> 获取指定元素在列表中的下标(下标值是0-长度减一)
注意:
如果元素不存在,会报错
如果元素不止一个,有多个,则只会返回第一个元素的下标。
4.列表.reverse() -> 将原列表倒序 反过来

nums = [1, 2, 3, 59, 8]  # [8, 59, 3, 2, 1]

nums.reverse()
print(nums)  # 是改变自身序列,而不是产生新的序列 注意与nums[::-1]区分(产生新序列)

5.列表.clear() 清空指定列表

nums = [1, 2, 3, 59, 8] 
nums.clear()
print(nums)  # []

6.列表.copy()
复制列表中的元素并产生一个新的列表
和列表[:]的功能一模一样,都属于浅拷贝 赋值后两个列表相互不影响

hero = ['后裔', '甄姬', '凯', '庄周', '蔡文姬']
hero2 = hero  # 直接赋值 两个列表相互影响
hero3 = hero[:]
del hero3[-1]
print(hero3)
print(hero)

7.列表.sort() -> 将列表中的元素从小到大进行排序,直接修改原列表中的顺序不会产生新的列表,列表.sort(reverse = True),将元素从大到小排列,直接修改顺序,不产生新的列表.

scores = [80,95,62,23,46,6,5,6,46]
scores.sort()
print(scores)
scores.sort(reverse = True)
print(scores)

8.排序函数:sorted(序列) -> 不修改原序列,排序后产生一个新的列表(从小到大),sorted(序列,reverse = True) 降序排列

scores = [80,95,62,23,46,6,5,6,46]
new_scores = sorted(scores)
print(scores)
print(new_scores)

9.列表.reversed(序列) -> 将序列中的元素倒序,产生一个新的序列对应的迭代器

new_str = reversed('abc')
for i in new_str:
    print(i)    # c,b,a

二、元组

1.元组就是不可变的列表

元组是容器型数据类型,将()作为容器的标志,里面多个元素用逗号隔开
(元素1,元素2,元素3)
元组不可变:元组中元素的个数和元素的种类都不能变(不支持增删改操作)
有序的:支持下标操作
元素可以是任何类型的数据

tuple1 = (1, 2, 3, 4, 5)
print(type(tuple1))  # <class 'tuple'>
tuple2 = (10, 20, 30, 11)
print(tuple2[-1])    # 11
print(tuple2[2:])    #30,11

2.相关运算:

+ * == != is(判断地址是否相等)  in   not in 判断元组中是否存在某个元素

len max min sum sorted方法也可在元组中使用
tuple(序列) 将数据转换成为元组

print(tuple('hello')) #('h', 'e', 'l', 'l', 'o')

3.元组特有的、使用频率偏高的操作

a、单个元素的元组 (元素,)逗号不能省

tuple3 = (10)
print(tuple3, type(tuple3))  # 10 <class 'int'>

tuple3 = (10,)
print(tuple3, type(tuple3))  # (10,) <class 'tuple'>

b、单独使用的元组的值,()可以省略->多个数据用逗号隔开表示的还是一个元组

tuple4 = 10, 20, 30
print(tuple4, type(tuple4))  # (10, 20, 30) <class 'tuple'>

c、可以通过让变量的个数和元组中元素的个数保持一致来分别获取元组中的元素
变量1,变量2,变量3=元组 元组中元素个数必须与前面变量的个数一致

tuple5 = (10, 20)
x, y = tuple5
print(x, y)  # 10 20

d、同时声明多个变量获取元组中的元素,变量的个数可以比元祖中元素的个数少,
但是这个时候多个变量中的某一个变量的前面必须加* ,带的变量可以获取不带的变量获取完剩下的部分

tp = (1, 2, 3, 5, 6,)
*a, b, c = tp
print(a, b, c)   # [1, 2, 3] 5 6

三、数字

python中和数字相关的类型主要有4种:整型(int) 浮点型(float) 布尔(bool) 复数(complex)
1.整型(int) - 所有整数对应的类型(python2.x 整型除了int 还有long):支持2、8、16进制表示方式
int(数据) - 将制定数据转换成整性 1.所有的浮点数和布尔都可以转换成整型
2.字符串(数字类型字符串) 去掉引号之后本身就是整数
2.浮点型(float) - 所有带小数点的数对应的数据类型;支持科学计数法 3e4=310*4
float(数据) 将指定数据转换成浮点数

1.所有的整数和布尔都可以转换成浮点

print(float(100))
print(3e41)  # 100.0 3e+41

2.字符串:字符串去掉引号后本身就是一个数字
3.布尔(bool) True本质就是1 False 本质是0
bool(数据) 将指定数据转换我布尔值
不管什么类型的数据都能转换成布尔
所有为0 为空的值转换成false,其他的值都是True

print(bool(0), bool(0.0), bool([]), bool(()), bool(None))
# False False False False False
print(True == 1)  # True
print(True + 1)  # 2
print(False * 3)  # 0

4.复数(complex) - 由实部和虚部组成的数 实部+虚部j:python直接支持复数的运算
注意如果虚部是1,这个1不能省略

c1 = 10 + 3j
c2 = 15 - 2j
print(c1 + c2)    #(25+1j)
print(c1 * c2)    # (156+25j)

作业

1、统计某个元素在字符串中出现的次数:

lis = [1, 2, 1, 2, 3, 5, 6, 4, 1, 6, 26, 3, 1,1 ]
arr = []
n = int(input('请输入您要查询的元素'))
for value in lis:
    if value == n:
        arr.append(value)
print('您查询的元素{}在这个字符串中出现了{}次'.format(n, len(arr)))

#请输入您要查询的元素:1
#您查询的元素1在这个字符串中出现了5次

2.在列表末尾一次性追加另一序列的多个值。

Lis = [1, 2, 3, 4, 5, 6, 7, 8]
lis1 = ('python')
for letters in lis1:
    Lis.append(letters)
print(Lis)
#  [1, 2, 3, 4, 5, 6, 7, 8, 'p', 'y', 't', 'h', 'o', 'n']

3.找出列表中某个值第一个匹配项的索引位置:

lis = [1, 5, 8, 9, 6, 4, 3, 1, 3]
nums = int(input('输入要获取下标的元素'))
for i in range(len(lis)):
    if nums == lis[i]:
        print('当前元素\t{}第一个匹配项的索引位置(下标)为{}'.format(nums, i))
        break
#输入要获取下标的元素1
#当前元素   1   第一个匹配项的索引位置(下标)为    0

4.取反向列表中的元素:

new_lis = [1, 2, 3, 5, 8, 'a', 'c', 'p','w','u']
a = []
for i in range(len(new_lis)):
    a.append(new_lis.pop())
for nubs in a:
    new_lis.append(nubs)
print('反向列表中的元素为:',new_lis)
#反向列表中的元素为: ['u', 'w', 'p', 'c', 'a', 8, 5, 3, 2, 1]
#[Finished in 0.2s]

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容