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
=
[
1
,
2
,
3
,
4
,
5
,
6
]
(tmp[
5
::
-
2
])
从索引为5的地方(元素6)开始,依次向前取值(步长为-2),所以结果为 [6, 4, 2]
2.
列表a = [2,3]
(a
*
2
)
对于数组、字符串的 * 表示对原数组、字符串的复制,所以 a * 2 表示对列表a的复制,结果为 [2,3,2,3]
字符串、列表和元组支持此种方法复制数据,字典和集合不行
1
2
tmp
=
'ab'
+
'c'
*
2
(tmp)
字符串的 ‘+’ 表示字符串之间的拼接,而 ‘*’ 表示字符串的倍数复制,则最后的结果为 ‘abcc’
1
2
3
a
=
[
1
,
2
,
3
]
b
=
[
4
,
5
,
6
]
(a
+
b)
两个列表的加法表示两个列表进行拼接,所以结果为:[1, 2, 3, 4, 5, 6]
3.
1
2
3
dicts
=
{}
dicts[(
1
,
2
)]
=
({
3
, (
4
,
5
)})
(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
(
'\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'
(strs.replace(
'I'
,
'Your'
))
(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’ 字符