python数据结构---列表(List)

1.列表的定义:

    列表是由一系列元素组成的,元素和元素之间可能没有任何的关联关系,但他们之间有先后顺序关系。
    列表是一种容器。列表是一种序列。列表是可以被改变的序列。

2.列表的创建:

# 创建空列表的字面值:
L = []
# 创建非空列表的字面值:
L = [1, 2, 3, 4]
L = ['beijing', 'shanghai', 'shenzhen']
L = [1, 'two', 3.3, '四']
L = [1, "one", [3.1, 3.2, 3.3], "三"]

# 列表的构造函数(括号里的是可迭代对象)
# 1.list():生成一个空的列表,等同于[]
L = list()
# 2.list(iterable):用可迭代对象创建一个列表
L = list(iterable)
L = list("hello") = ['h', 'e', 'l', 'l', 'o']
L = list(range(1,10,2)) = [1, 3, 5, 7, 9]

3.列表的算术运算:

# 运算符:+  +=  *  *=
# +: 用于拼接列表
[1, 2, 3] + [4, 5, 6, 7] = [1, 2, 3, 4, 5, 6, 7]
# 注:顺序没变
[1,"二"] + ["three", 4.4, False, None, 1+2j]

# +=:用原列表与右侧列表拼接,并用变量绑定新列表
x = [1, 2, 3]
x += [4, 5, 6, 7]
x = [1, 2, 3, 4, 5, 6, 7]

# *: 生成重复的列表
x = [1, 2] * 3 = [1, 2, 1, 2, 1, 2]

# *=:生成重复的列表,并给原变量赋值
x = [1,2]      x *= 2         x = [1, 2, 1, 2]
y = 3          y *= [7,8]     y = [7, 8, 7, 8, 7, 8]

4.列表的比较运算:

运算符:<  <=  >  >=  ==  !=
[1, 2, 3] < [1, 2, 4]            Ture
[1, 3] > [1, 2, 4]               Ture
[5] < [5, 0]                     True
["ABC","123"] > ["abc","456"]    False
[1,"two"] > ["two",1]            报错:1和"two"没法比较
[1, 2] < [3.3, 4]                True

5.列表的in  /  not in:

6.列表的索引和切片:

7.列表推导式:

8.列表方法:

# 1.append() 与 extend()
L = [2, 3, 5, 7, 11]
a = L.append([11, 13, 15])
print(a, L)      # 结果:(None, [2, 3, 5, 7, 11, [11, 13, 15]])
b = L.extend([11, 13, 15])
print(b, L)      # 结果:(None, [2, 3, 5, 7, 11, 11, 13, 15])

# 2.insert()
L = [2, 3, 5, 7, 11]
a = L.insert(1, 6)
print(a, L)      # 结果:(None, [2, 6, 3, 5, 7, 11])
# 附加:在指定的索引位置处加个元素。方法没有返回值。


# 删除
# 1. 使用del语句删除指定位置元素
L = [2, 3, 5, 7, 11]
del L[-1]
print L      结果:[2, 3, 5, 7]
del L[::2]
print L      结果:[3, 7]

# 2. 使用remove()删除指定值
L = [2, 3, 5, 7, 5, 11]
L.remove(5)
print L      结果:[2, 3, 7, 5, 11]
# 附加:如果有两个5,则删除第一个5,再执行一次,会删除第二个5。方法没有返回值。

# 3. 使用pop()获取并删除指定位置元素:如果不加索引,默认删除最后元素,同时返回删除元素的引用关系。
L = [2, 3, 5, 7, 11]
a = L.pop(2)
print a, L      #结果:5  [2, 3, 7, 11]
b = L.pop()
print b, L      #结果:11 [2, 3, 7]
# 附加:L.pop()有返回值,不接收也可以。

# 4. 使用clear()清空列表:   
L = [2, 3, 5, 7, 11]
a = L.clear()   
print a, L      #结果:None []
# 附加:L.clear()清空列表,等同于L[:] = [],这是切片赋值。方法没有返回值。
 

8.列表去重的方法:

# 方法1:原列表元素顺序不会改变
arr1 = [2, 3, 5, 7, 5, 11]
arr2 = []
for d in arr1:
    if d not in arr2:
        arr2.append(d)
print arr2      # 结果:[2, 3, 5, 7, 11]

# 方法2:原列表元素顺序发生改变
arr1 = [2, 3, 5, 7, 5, 11]
arr3 = list(set(arr1))
print arr3      # 结果:[11, 2, 3, 5, 7]

# 方法3:原列表元素顺序发生改变,用字典的keys:
arr1 = [2, 3, 5, 7, 5, 11]
d = {}
for i in arr1:
    d[i] = 0
arr4 = list(d.keys())
print arr4      # 结果:[11, 2, 3, 5, 7]

# 方法4:使用itertools的groupby方法:对旧列表的元素进行分组,最后循环获取分组的信息,就能直接获取到去重后的新列表。
import itertools
arr1 = [2, 3, 5, 7, 5, 11]
arr5 = []
arr1.sort()
it = itertools.groupby(arr1)
for k, g in it:
    arr5.append(k)
print arr5      # 结果:[2, 3, 5, 7, 11]

# 方法5:使用Series的unique方法:Series是pandas的一种数据结构,我们可以将旧列表转换为series对象,直接调用unique方法实现列表的去重。
from pandas import Series
arr1 = [2, 3, 5, 7, 5, 11]
series = Series(arr1)
arr6 = list(series.unique())
print arr6      # 结果:[2, 3, 5, 7, 11]

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值