Re: [闲聊] 自学练习

楼主: erimow (Erimo)   2024-08-11 15:03:36
: Write a function called "intersection" that takes 2 lists, and returns an list
: of elements that are in the intersection of 2 list.
: 这题我的答案gpt说超级没效率
: 不过他说是对的
: def intersection(lst1, lst2):
: result = []
: index_lst1 = 0
: index_lst2 = 0
: for i in range(0, len(lst1)):
: for j in range(0, len(lst2)):
: # print(lst1[i])
: if lst1[i] == lst2[j] and lst1[i] not in result:
: # print(lst1[i])
: # print(lst2[j])
: result.append(lst1[i])
: # index_lst2 += 1
: # result.append(lst1[index_lst1])
: # index_lst2 += 1
: return result
: print(intersection([1, 3, 4, 6, 10], [5, 11, 4, 3, 100, 144, 0]))
: print(intersection([1, 3, 3, 3, 4, 6, 10], [5, 11, 4, 3, 100, 144, 0]))
: # returns [3, 4]
: index_lst1 = 0
: index_lst2 = 0
: 这两行是一开始想法的痕迹,后来没用到
: 我本来是想用上次解007那题的方式
: 从lst1[0]开始,去对照lst2的每一个数字
: 当有重复就记录下来,但不知道为啥写不出来
: 所以就笨方法
: 设i和j,去把两个lst所有数字比较一次,一样就记录下来
: 然后去重,已经在result里的就不再记就可以
突然想到
这第二题没有阻止我有intersection
return list(set(lst1).intersection(set(lst2)))
这样好像就行了
把def的名字改掉就好
回到第三题抽插的部分
# Write a function called "flatten" that flattens an list.
flatten([1, [[], 2, [0, [1]], [3]], [1, 3, [3], [4, [1]], [2]]])
# returns [1, 2, 0, 1, 3, 1, 3, 3, 4, 1, 2]
插进去出不来
看解答
result = []
def flatten(lst):
for i in lst:
if type(i) == type([]):
flatten(i)
else:
result.append(i)
return result
print(flatten([1, [[], 2, [0, [1]], [3]], [1, 3, [3], [4, [1]], [2]]]))
# returns [1, 2, 0, 1, 3, 1, 3, 3, 4, 1, 2]
递回和stack都还没学过
这两篇讲得大概能理解最最基本概念是什么
虽然能看理解他在讲啥,但要我自己用现在肯定不懂
https://medium.com/appworks-school/%E9%80%B2%E5%85%A5%E9%81%9E%E8%BF%B4-
recursion-%E7%9A%84%E4%B8%96%E7%95%8C-%E4%B8%80-59fa4b394ef6
https://medium.com/traveling-light-taipei/%E6%BC%94%E7%AE%97%E6%B3%95%E7%AD%86
%E8%A8%98-%E9%81%9E%E8%BF%B4-recursion-e66e81566679
两个都有图解,真棒

Links booklink

Contact Us: admin [ a t ] ucptt.com