1、python中常用的数据结构有哪些?请简要介绍一下。
列表list,元祖tuple,字典dict,字符串str,集合ser,数字int

2、简要描述python中单引号、双引号、三引号的区别。
首先,单引号和双引号在使用时基本上没有什么区别,唯一需要注意的是:当字符串中有单引号时,最好在外面使用双引号;
当有双引号时,最好在外面使用单引号。
三引号一般不常用,除了用来做注释之外,还可以用来打印多行字符串。特殊用途,是可以打印多行字符串。

3、如何在一个function里设置一个全局的变量。
在函数内部是无法定义一个全局变量的,只能做到修改已经定义的全局变量。

4、python里面如何拷贝一个对象?(赋值、浅拷贝、深拷贝的区别
(1)赋值:其实就是对象的引用。相当于C的指针,修改了其中一个对象,另一个跟着改变。
(2)浅拷贝:拷贝父对象,但是不会拷贝父对象的子对象。
(3)深拷贝:完全拷贝了父对象和子对象

总结:
(1)当对象为不可变类型时,不论是赋值,浅拷贝还是深拷贝,那么改变其中一个值时,另一个都是不会跟着变化的。
(2)当对象为可变对象时,如果是赋值和浅拷贝,那么改变其中任意一个值,那么另一个会跟着发生变化的;如果是深拷贝,是不会跟着发生改变的。

5、如果custname字符串的编码格式为uft-8,如何将custname的内容转化为gb18030的字符串?
先将custname编码格式转换为unicode,在转换为gb18030。即custname.decode('utf-8').encode('gb18030')。

6、请写出一段python代码实现删除list中的重复元素。

a = [1, 2, 3, 4, 5, 2, 3]
def fun1(a):
      a = list(set(a))
      print(a)
fun1(a)

7、这两个参数是什么意思?args和 kwargs。

*args和**kwargs主要用于函数定义
*args 是用来发送一个非键值对的可变数量的参数列表给一个函数;
**kwargs 允许你将不定长度的键值对, 作为参数传递给一个函数

8、
(1)统计如下list单词及其出现的次数。

a=['apple', 'banana', 'apple', 'tomato', 'orange', 'apple', 'banana', 'watermeton']
  from collections import Counter
  a = Counter(a)
  print(a) 
  dic = {}
  for i in a:
        dic[i] = dic.get(i,0) + 1
  print(dic)

(2)给列表中的字典排序:例如有如下list对象: 将alist中的元素按照age从小到大排序。

alist=[{"name":"a", "age":20}, {"name":"b", "age":30}, {"name":"c", "age":25}]
  alist2 = sorted(alist,key=lambda i:i["age"],reverse=False)
  print(alist2)