0718列表、元组

print()函数查看帮助文件

>>> help(print)
Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

>>>

语法格式:

 print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

等价于

print(value1,value2,...,valuen,sep=' ', end='\n', file=sys.stdout, flush=False)

demo:

>>> a,b,c,*d = 1,2,3,4,5,6
>>> a
1
>>> b
2
>>> c
3
>>> d
[4, 5, 6]
>>> print(a,b,c,d)
1 2 3 [4, 5, 6]
>>> print(a,b,c,d,sep="#")
1#2#3#[4, 5, 6]
>>> for i in range(5):
...     print(i)
...
0
1
2
3
4
>>> for i in range(5):
...     print(i,end=" ")
...
0 1 2 3 4 >>>
>>> for i in range(5):
...     print(i,end="#")
...
0#1#2#3#4#>>>

格式化字符串

%号格式化

占位符

格式描述
%d有符号的整数
%s字符串
%c字符及ASCII码
%o无符号的八进制整数
%x/%X无符号的十六进制整数
%e/%E浮点数,科学计数法
%f浮点数

%格式化字符串 用%匹配参数,注意个数一一对应

print("%d%%" % 100)      #  %% 转译出%
100%

format格式化

(1)位置映射

print("{}:{}".format("Tom",18))
print("name:{},age:{}".format("Tom",18))

Tom:18
name:Tom,age:18

(2)关键字映射

print("{address},name:{},age:{}".format("Tom",18,address = '后面关键字必须在最后'))

后面关键字必须在最后,name:Tom,age:18

(3)元素访问

print("第一个元素是:{0[0]},第二个元素是:{0[1]},第三个元素是:{0[2]}.".format(('www.','4399.','com')))

列表

列表由方括号括起来的[],每个元素以逗号分隔;

可以储存不同的数据类型数据

  • 特点
    • 有序
    • 可重复
    • 可变类型
1.创建空列表
li = []
print(type(li))
2.创建多元素列表
li = [1,2,3,"abc",[4,5,6],['A']]
3.强转
sr = "abc"
li = list(sr)
print(li)

['a', 'b', 'c']
4.拼接
li1 = ["I"]
li2 = ["Love"]
li3 = ["Python"]

print(li1+li2+li3)

['I', 'Love', 'Python']
5.重复
li = ["啊啊"]
print(li * 3)

['啊啊', '啊啊', '啊啊']
6.索引(偏移) [] 切片[:] [::]
li = ["z","u","c","c","zucc",["very","nice"]]
print(len(li))
print(li[0],li[-4])
print(li[:3])
print(li[::-1])
print(li[4][3])
print(li[5][1])

6
z c
['z', 'u', 'c']
[['very', 'nice'], 'zucc', 'c', 'c', 'u', 'z']
c
nice
7.增删改查
7.1增
  • append()
  • extend()
  • insert()
li = [1,2]
print(id(li))
li1 = ['z','u','c','c']
li.append(li1)
print(li,id(li))

1766771992584
[1, 2, ['z', 'u', 'c', 'c']] 1766771992584
li = [1,2]
li1 = ['z','u','c','c']
li.extend(li1)
print(li)

[1, 2, 'z', 'u', 'c', 'c']
li = [1,2]
li1 = ['z','u','c','c']
li.insert(0,li1)
print(li)

[['z', 'u', 'c', 'c'], 1, 2]
7.2改
li = ['z','u','c','c',['i','love'],'you']
li[1] = 'z'
li[4:6] = [['very'],'nice']
print(li)

['z', 'z', 'c', 'c', ['very'], 'nice']
7.3删除
  • pop() ,返回被删除的元素

    • 如果不指定索引,默认删除最后一个元素

    • 删除指定索引对应元素

li = ['z','u','c','c',['i','love'],'you']
print(li.pop())
print(li)
you
['z', 'u', 'c', 'c', ['i', 'love']]

li = ['z','u','c','c',['i','love'],'you']
print(li.pop(1))
print(li)
u
['z', 'c', 'c', ['i', 'love'], 'you'] 
  • remove(),移除第一次遇到的指定元素
li = ['z','u','c','c',['i','love'],'you']
li.remove('c')
print(li)

['z', 'u', 'c', ['i', 'love'], 'you']
  • del
li = ['z','u','c','c',['i','love'],'you']
del li[2:5]
print(li)

['z', 'u', 'you']
#若 del li    则name 'li' is not defined
  • clear(),清空
li = ['z','u','c','c',['i','love'],'you']
li.clear()
print(li)

[]
7.4遍历
  • 索引,切片
  • 遍历
    • 元素遍历
    • 索引遍历
    • 枚举遍历
      • enumerate(), 对于一个可迭代的/可便利的对象(如列表,字符串),将其组成一个索引序列,利用它,我们可以同时获得索引和值
li = ['z','u','c','c',['i','love'],'you']
for i in li:
    print(i)

    
z
u
c
c
['i', 'love']
you
li = ['z','u','c','c',['i','love'],'you']
for i in range(len(li)):
    print(li[i])
    
z
u
c
c
['i', 'love']
you
li = ['z','u','c','c',['i','love'],'you']
for index,value in enumerate(li):
    print(index,value)

0 z
1 u
2 c
3 c
4 ['i', 'love']
5 you
8.堆和栈
9.其他操作
9.1计数,count(),查找元素出现的次数
9.2反转,reverse()
li = ['z','u','c','c',['i','love'],'you']
print(li)
li.reverse()
print(li)

['z', 'u', 'c', 'c', ['i', 'love'], 'you']
['you', ['i', 'love'], 'c', 'c', 'u', 'z']
9.3排序,sort(),列表内需要是同一种数据类型
li = [['i','love'],['a'],['z']]
print(li)
li.sort()
print(li)

[['i', 'love'], ['a'], ['z']]
[['a'], ['i', 'love'], ['z']]
#输出两个列表的交集

li1 = ['a','b','c','d']
li2 = ['c','d','e','f']
li = []
for i in li1:
    if i in li2:
        li.append(i)
print(li)

['c', 'd']
9.4赋值与拷贝
  • 赋值:对对象的引用
  • 深浅拷贝
    • 浅拷贝会创建新对象,内容是原对象的引用
      • 切片[:]

      • 工厂函数list (li)

      • copy模块内的copy函数

la = [1,2,3,4,5,6,7,'a',['b1','b2']]
lb = la
lb2 = la[:]
print(id(la))
print(id(lb2))

import copy
lb_copy = copy.copy(la)
print(id(la))
print(id(lb_copy))
la.append('text')
print(la)
print(lb_copy)
la[8][1] = 'c'
print(la)
print(lb)

2152543679240
2152543680904
2152543679240
2152543680648
[1, 2, 3, 4, 5, 6, 7, 'a', ['b1', 'b2'], 'text']
[1, 2, 3, 4, 5, 6, 7, 'a', ['b1', 'b2']]
[1, 2, 3, 4, 5, 6, 7, 'a', ['b1', 'c'], 'text']
[1, 2, 3, 4, 5, 6, 7, 'a', ['b1', 'c'], 'text']

浅拷贝相当于我们只拷贝了一层,修改外层元素,会修改引用,让她们指向另一个位置;修改嵌套列表的元素,列表地址没有发生变化,指向还是一个位置。所以修改内部嵌套内容会同时变化

  • 深浅拷贝

    • 深拷贝
import copy
la = [1,2,3,4,5,6,7,'a',['b1','b2']]
lb_deepcopy = copy.deepcopy(la)
print(la,id(la))
print(lb_deepcopy,id(lb_deepcopy))
la[8][1]= 'c'
print(la)
print(lb_deepcopy)

[1, 2, 3, 4, 5, 6, 7, 'a', ['b1', 'b2']] 2706895534472
[1, 2, 3, 4, 5, 6, 7, 'a', ['b1', 'b2']] 2706895534280
[1, 2, 3, 4, 5, 6, 7, 'a', ['b1', 'c']]
[1, 2, 3, 4, 5, 6, 7, 'a', ['b1', 'b2']]

深拷贝拷贝所有对象,包括嵌套元素,创建一个全新的地址,所以修改原内部嵌套内容不会发生连变

列表生成式

用来生成列表的特定的语法形式

格式:

[表达式 for 迭代元素 in 可迭代对象]

实现原理

- 迭代[可迭代对象]中的每一个元素
- 每迭代一次的结果赋值给对应的迭代元素,在通过表达式运算得到一个新的值
- 最后所有通过表达式计算的值以一个列表的形式返回
print([x for x in range(10) if x%2==0])
[0, 2, 4, 6, 8]

sr = '城市学院'
print([ord(x) for x in sr])
[22478, 24066, 23398, 38498]

li = [22478, 24066, 23398, 38498]
print([chr(x) for x in li])
['城', '市', '学', '院']

带过滤功能格式:

[exp for iter_val in iter if if_condtion]

相当于:

li = []
for iter_val in iter:
    if if_condtion
        li.append(iter_val)
print(li)
name = ["1","2","3"]
subject = ["4","5","6"]
li = []
for i in name:
    for j in subject:
        li.append([i,j])
print(li)


print([[i,j] for i in name for j in subject])

[['1', '4'], ['1', '5'], ['1', '6'], ['2', '4'], ['2', '5'], ['2', '6'], ['3', '4'], ['3', '5'], ['3', '6']]
[['1', '4'], ['1', '5'], ['1', '6'], ['2', '4'], ['2', '5'], ['2', '6'], ['3', '4'], ['3', '5'], ['3', '6']]

元组

  • 有序
  • 可重复
  • 不可更改

符号使用 ()

定义:由小括号括起来的(),每个元素以逗号分隔;

1.创建空元组

tp = ()
print(type(tp))

2.创建单元素元组

单元素之后必须加逗号!

tp = ('123',)
print(type(tp))

<class 'tuple'>

3.创建多元素元组

4.拼接

tp = ('123','a','b','c','d')
tp1 = ('456',)
print(tp+tp1)

('123', 'a', 'b', 'c', 'd', '456')

5.重复

tp = ('123','a','b','c','d')
tp1 = ('456',)
print(tp*3)

('123', 'a', 'b', 'c', 'd', '123', 'a', 'b', 'c', 'd', '123', 'a', 'b', 'c', 'd')

6.索引(偏移) 切片[:]

tp = ('123','a','b','c','d')
tp1 = ('456',)
tp2 = ('123','a','b','c',['ccc','bbb'])
print(tp+tp1)
print(tp*3)
print(tp[2])
print(tp[::-1])
tp2[4][0] = 'aaa'
print(tp2[4][0])
print(tp2)


('123', 'a', 'b', 'c', 'd', '456')
('123', 'a', 'b', 'c', 'd', '123', 'a', 'b', 'c', 'd', '123', 'a', 'b', 'c', 'd')
b
('d', 'c', 'b', 'a', '123')
aaa
('123', 'a', 'b', 'c', ['aaa', 'bbb'])

7.查删

  • 使用index和切片查
tp = ('123','a','b','c',['ccc','bbb'])
print(tp.index('123'))
0

tp2 = ('123','a','b','c',['ccc','bbb'])

print(tp2[2:3])
('b',)
  • 整体删除
tp = ('123','a','b','c',['ccc','bbb'])
del tp

8.判断

tp = ('123','a','b','c',['ccc','bbb'])
print('a' in tp)

True

9.最大值,最小值

tp1 = ('a','b','c','d')
print(max(tp1),min(tp1))

d a

10.遍历

  • 元素遍历
tp1 = ('a','b','c','d')
for i in tp1:
 print(i)

a
b
c
d
  • 索引遍历
tp1 = ('a','b','c','d')
for i in range(len(tp1)):
 print(tp1[i])

a
b
c
d
  • 枚举enumerate
tp1 = ('a','b','c','d')
for index,value in enumerate(tp1):
    print(index,value)

0 a
1 b
2 c
3 d
资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 “STC单片机电压测量”是一个以STC系列单片机为基础的电压检测应用案例,它涵盖了硬件电路设计、软件编程以及数据处理等核心知识点。STC单片机凭借其低功耗、高性价比和丰富的I/O接口,在电子工程领域得到了广泛应用。 STC是Specialized Technology Corporation的缩写,该公司的单片机基于8051内核,具备内部振荡器、高速运算能力、ISP(在系统编程)和IAP(在应用编程)功能,非常适合用于各种嵌入式控制系统。 在源代码方面,“浅雪”风格的代码通常简洁易懂,非常适合初学者学习。其中,“main.c”文件是程序的入口,包含了电压测量的核心逻辑;“STARTUP.A51”是启动代码,负责初始化单片机的硬件环境;“电压测量_uvopt.bak”和“电压测量_uvproj.bak”可能是Keil编译器的配置文件备份,用于设置编译选项和项目配置。 对于3S锂电池电压测量,3S锂电池由三节锂离子电池串联而成,标称电压为11.1V。测量时需要考虑电池的串联特性,通过分压电路将高电压转换为单片机可接受的范围,并实时监控,防止过充或过放,以确保电池的安全和寿命。 在电压测量电路设计中,“电压测量.lnp”文件可能包含电路布局信息,而“.hex”文件是编译后的机器码,用于烧录到单片机中。电路中通常会使用ADC(模拟数字转换器)将模拟电压信号转换为数字信号供单片机处理。 在软件编程方面,“StringData.h”文件可能包含程序中使用的字符串常量和数据结构定义。处理电压数据时,可能涉及浮点数运算,需要了解STC单片机对浮点数的支持情况,以及如何高效地存储和显示电压值。 用户界面方面,“电压测量.uvgui.kidd”可能是用户界面的配置文件,用于显示测量结果。在嵌入式系统中,用
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 在 Android 开发中,Fragment 是界面的一个模块化组件,可用于在 Activity 中灵活地添加、删除或替换。将 ListView 集成到 Fragment 中,能够实现数据的动态加载与列表形式展示,对于构建复杂且交互丰富的界面非常有帮助。本文将详细介绍如何在 Fragment 中使用 ListView。 首先,需要在 Fragment 的布局文件中添加 ListView 的 XML 定义。一个基本的 ListView 元素代码如下: 接着,创建适配器来填充 ListView 的数据。通常会使用 BaseAdapter 的子类,如 ArrayAdapter 或自定义适配器。例如,创建一个简单的 MyListAdapter,继承自 ArrayAdapter,并在构造函数中传入数据集: 在 Fragment 的 onCreateView 或 onActivityCreated 方法中,实例化 ListView 和适配器,并将适配器设置到 ListView 上: 为了提升用户体验,可以为 ListView 设置点击事件监听器: 性能优化也是关键。设置 ListView 的 android:cacheColorHint 属性可提升滚动流畅度。在 getView 方法中复用 convertView,可减少视图创建,提升性能。对于复杂需求,如异步加载数据,可使用 LoaderManager 和 CursorLoader,这能更好地管理数据加载,避免内存泄漏,支持数据变更时自动刷新。 总结来说,Fragment 中的 ListView 使用涉及布局设计、适配器创建与定制、数据绑定及事件监听。掌握这些步骤,可构建功能强大的应用。实际开发中,还需优化 ListView 性能,确保应用流畅运
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值