Day5_列表的增删改及操作

Python列表的增删改操作详解
这篇博客详细介绍了Python列表的增删改操作,包括使用append和insert添加元素,用del、remove和pop删除元素,以及如何修改列表中指定下标元素。还提到了列表的加法和乘法运算,以及一些常见的列表操作如判断元素存在性、求元素和、处理奇数下标元素等。作业部分包含了多个基于列表的操作题目。
Day5_列表的增删改

总结:

列表的增删改

1.增 - 添加元素

  • 列表.append(元素) - 在列表的最后添加指定元素。
  • 列表.insert(下标,元素) - 在列表的指定下标所在的位置前插入指定元素。

2.删 - 删除列表中的元素

  • del 列表[下标] - 删除列表中指定下标对应的元素。

    注意:下标不能越界! 越界程序会报错。

  • 列表.remove(元素) - 删除列表中指定元素。

    注意:如果要删除的元素在列表中有多个,只删除最前面的一个;

    ​ 如果要删除的元素不存在,程序会报错。

  • 列表.pop() - 取出列表最后一个元素,并且返回。

    列表.pop(下标) - 取出列表对应下标的元素,并且返回。

3.改 - 列表[下标] = 新值 - 修改列表中指定下标对应的元素

​ 补充 :如果直接用一个列表变量给另一个变量赋值,赋的是原变量中数据的地址。

列表相关操作

1.列表的加法和乘法运算:

list1 = [10,20]
list2 = [30,40]
print(list2+list1)                   #[10,20,30,40]
print(list2*3)                       #[30,40,30,40,30,40]
  1. in 和not in
  • 元素 in 列表 - 判断列表中是否存在指定元素。
  • 元素 not in 列表 - 判断列表中是否不存在指定元素。
print(10 in [10,20,30])                   #True
print([10,20] in [10,20,30])              #False
print([10,20] in [[10,20],30])            #True

作业:

1.已知一个数字列表,求列表中心元素。

nums = [11,21,31,41,24,31,54]
if len(nums) == 0:
    print('该列表是一个空列表!')
elif len(nums) % 2:
    print(nums[len(nums)//2])
else:
    print(nums[len(nums)//2])
    print(nums[len(nums) // 2 -1])

2.已知一个数字列表,求所有元素和。

nums = [11,21,31,41,24,31,54]
# 方法一
sum1 = 0
for x in nums:
    sum1 += x
print(sum1)
#方法二
sum1 = 0
for index in range(len(nums)):
    sum1 += nums[index]
print(sum1)

3.已知一个数字列表,输出所有奇数下标元素。

nums = [11,21,31,41,24,31,54]
for index in range(len(nums)):
    if index % 2:
        print(nums[index])

4.已知一个数字列表,输出所有元素中,值为奇数的元素。

nums = [11,21,31,41,24,31,54]
for x in nums:
    if x % 2:
        print(x)

5.已知一个数字列表,将所有元素乘二。

#例如:nums = [1, 2, 3, 4]  —>  nums = [2, 4, 6, 8]
nums = [1, 2, 3, 4]
for index in range(len(nums)):
    nums[index] *= 2
print(nums)

6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的。

#例如:names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三'] -> names = ['张三', '李四', '大黄']
names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三']
names_new = names[:]
for x in names:
    while True:
        if x in names_new:
            names_new.remove(x)
        else:
            names_new.append(x)
            break
print(names_new)

7.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分) 。

# 方法一
scores = [92,58,64,75,84,79,69,88,86,97]
max1 = min1 = scores[0]
sum1 = 0
count = 0
for x in scores:
    if x > max1:
        max1 = x
    if x < min1:
        min1 = x
    sum1 += x
    count += 1
print('平均分:',(sum1-max1-min1)/(count-2))
#方法二
scores = [92,58,64,75,84,79,69,88,86,97]
num = min(scores) + max(scores)
print(num)
sum1 = 0
for x in scores:
    sum1 += x
print((sum1 - num)/(len(scores)-2))

8.有两个列表A和B,使用列表C来获取两个列表中公共的元素

A = [1, 'a', 4, 90]
B = [8, 'j', 1,'a']
C = []
if len( A ) <= len( B ):
    for x in A:
        if x in B:
            C.append(x)
else:
    for x in B:
        if x in A:
            C.append(x)
print(C)

9.*有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数。

#例如: nums = [19, 89, 90, 600, 1]   —>  600
nums = [19, 89, 90, 600, 1]
max_num = nums[0]
	for x in nums:
        if x in 
    else:
        nums_max = x
print(nums_max)

10.*获取列表中出现次数最多的元素。

# 例如:nums = [1, 2, 3,1,4,2,1,3,7,3,3]   —> 打印:3 
# 如下代码只能取出出现次数最多的一个元素,不能取出多个元素。
nums = [1, 2, 3, 1, 4, 2, 1, 3, 7, 3, 3]
nums_new = nums[:]
list1 = []
for x in nums_new:
    nums.remove(x)
    if x not in nums:
        list1.append(x)
for _ in range(len(nums_new)-len(list1)):
    for x in list1:
        if x in nums_new:
            nums_new.remove(x)
        if len(nums_new) == 1:
            break
print(nums_new[0])
### 查询 Oracle 数据库中的增删改日志 在 Oracle 数据库中,可以通过多种方式来追踪和查询插入、删除以及修改操作的相关日志。以下是几种常见的实现方法: #### 1. 使用 `FLASHBACK` 功能 Oracle 提供了强大的闪回功能(Flashback),可以用于查看过去某个时间点的数据状态变化情况。通过启用 Flashback Data Archive (FDA),可以存储表的历史版本并允许用户查询这些历史数据。 ```sql SELECT VERSIONS_STARTTIME, VERSIONS_ENDTIME, * FROM YOUR_TABLE VERSIONS BETWEEN TIMESTAMP SYSTIMESTAMP - INTERVAL '1' DAY AND SYSTIMESTAMP; ``` 此语句会返回指定时间段内的所有更改记录[^1]。 #### 2. 启用审计功能 (`AUDIT`) 为了捕获 DML 操作的具体细节,可以配置数据库级别的审计机制。当启用了审计后,每次执行 INSERT、UPDATE 或 DELETE 操作时都会被记录下来,并存入 `DBA_AUDIT_TRAIL` 或其他相关视图中。 启动基本审计命令如下所示: ```sql AUDIT ALL BY ACCESS WHENEVER SUCCESSFUL OR UNSUCCESSFUL; ``` 之后可通过以下 SQL 查看具体的审计条目: ```sql SELECT ACTION_NAME, OBJ_NAME, SESSIONID, RETURNCODE, TERMINAL, OS_USERNAME, USERHOST FROM DBA_COMMON_AUDIT_TRAIL WHERE OBJECT_SCHEMA='YOUR_SCHEMA'; ``` 注意:需要管理员权限才能访问上述视图表[^2]。 #### 3. 利用触发器自定义日志记录 如果标准工具无法满足需求,则可以在目标表上创建 BEFORE/AFTER TRIGGER 来手动保存变更前后的值至专门设计的日志表里。例如下面的例子展示了如何捕捉 STU 表的变化信息: ```sql CREATE TABLE stu_logs ( log_id NUMBER GENERATED ALWAYS AS IDENTITY, operation VARCHAR2(10), changed_at DATE DEFAULT SYSDATE, old_data CLOB, new_data CLOB); CREATE OR REPLACE TRIGGER trg_stu_changes BEFORE INSERT OR UPDATE OR DELETE ON stu FOR EACH ROW DECLARE BEGIN IF DELETING THEN INSERT INTO stu_logs(operation,old_data) VALUES('DELETE', TO_CLOB(:OLD)); ELSIF UPDATING THEN INSERT INTO stu_logs(operation,new_data,old_data) VALUES('UPDATE',TO_CLOB(:NEW),TO_CLOB(:OLD)); ELSE -- inserting INSERT INTO stu_logs(operation,new_data) VALUES('INSERT',TO_CLOB(:NEW)); END IF; END; / ``` 这样每当有针对 STU 的任何变动发生时,相应的描述会被写入到 STU_LOGS 中以便后续分析[^3]。 #### 总结 以上介绍了三种主要途径去获取有关于 Oracle 数据库对象上的增加、更新或者移除动作的信息源。具体采用哪种取决于实际应用场景和技术环境的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值