2023.10.7-数据容器习题

1.对列表a = [1,2,3,1,2,4,6]进行去重后,得到列表b

利用字典去重
a = [1, 2, 3, 1, 2, 4, 6]
b = {}
b1 = list(b.fromkeys(a))
print(b1)

利用集合去重

b = list(set(a)) 

创建新列表,用判断语句来判断新列表是否有旧列表的内容,如果没有则添加,如果有则循环一次
a = [1, 2, 3, 1, 2, 4, 6]
a.sort()
b = []  # 空列表接收去重后的值
i = 0
while i < len(a):  # 控制循环次数为a列表元素的总数量
    if a[i] not in b:  # 如果a列表中的元素没有在b里,则添加
        b.append(a[i])
    i += 1
print(b)  # [1, 2, 3, 4, 6]

 

a = [1, 2, 3, 1, 2, 4, 6]
a.sort()  # 升序 [1, 1, 2, 2, 3, 4, 6]
length, last = len(a), a[-1]
# 长度和最后 = 0123456,倒数第一索引
print(length, a[-1])  # 元素数是7,倒数第一的数字是6

for i in range(length - 2, -1, -1):
    # 范围:(5,1,-1)从索引5开始,到最后结束,步长-1决定从右往左走
    if a[i] == last:
        a.remove(a[i])  # 移除
    else:
        last = a[i]
b = a
print(b)  # [1, 2, 3, 4, 6]

 2.下列运行结果为

1.

tmp = [123456]

print(tmp[5::-2])

从索引为5的地方(元素6)开始,依次向前取值(步长为-2),所以结果为 [6, 4, 2]

2. 

列表a = [2,3]

print(a*2)

对于数组、字符串的 * 表示对原数组、字符串的复制,所以 a * 2 表示对列表a的复制,结果为 [2,3,2,3]

字符串、列表和元组支持此种方法复制数据,字典和集合不行

1

2

tmp = 'ab' + 'c'*2

print(tmp)


字符串的 ‘+’ 表示字符串之间的拼接,而 ‘*’ 表示字符串的倍数复制,则最后的结果为 ‘abcc’

1

2

3

= [123]

= [456]

print(a+b)

 两个列表的加法表示两个列表进行拼接,所以结果为:[1, 2, 3, 4, 5, 6]

3. 

1

2

3

dicts = {}

dicts[(12)] = ({3, (45)})

print(dicts)

 对字典中添加键/值,题目中的字典键为 (1,2),对应的值为 ({3, (4, 5)})

{(1, 2): {(4, 5), 3}}

4. 

1

2

3

4

5

strs = ' I like python '

one = strs.strip()

print(one)

two = strs.rstrip()

print(two)

 字符串的strip()函数为删除字符串的前后空格,rstrip() 为删除字符串末尾的空格

'I like python', ' I like python'

strip():删除首尾空格;

rstrip():仅删除右空格

lstrip():仅删除左空格

5. 

 

def fn():

    t = []

    i = 0

    while i < 2:

        t.append(lambda x: print(i*x,end=","))

        i += 1

    return t

for f in fn():

    f(2)
 

for i in fn(): 此时fn调用,i进入循环,当i加到2时跳出循环才会return得到t,此时t = [f, f],里面的f是那个匿名函数,故fn() = t = [f, f],注意此时f里的i == 2,因为只有i=2,fn才有返回值,程序才会进行下去

那么for i in fn()就变成了for i in [f, f],此时f(2) = print(i * 2, end=",") = print(2 * 2, end=",")即print(‘4,’),故for循环完后结果为4,4,
 

6. 

1

print('\n'.join(['a''b''c']))

 

join会把换行符当成普通连接字符进行连接,通过换行连接,因此

print('\n'.join(['a', 'b', 'c']))

a
b
c

7. 

1

2

3

strs = 'I like python and java'

print(strs.replace('I''Your'))

print(strs.replace('a''*'2))

 

string.replace(str1, str2,  num=string.count(str1)),把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次。

因此 strs.replace('I', 'Your') 的结果为:'Your like python and java';strs.replace('a', '*', 2)的结果为:'I like python *nd j*va',只会替换字符串中的两个 ‘a’ 字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白白的wj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值