查看list的形状
转为numpy.array后用.shape
import numpy as np
L = [[1,2],[3,4],[5,6],[7,8]]
L = np.array(L)
print(L.shape)
# (4, 2)
list 和 np.array的区别
np.array里都是同一类元素,list则不一定。
- 一个numpy array 是内存中一个连续块,并且array里的元素都是同一类(例如整数)。所以一旦确定了一个array,它的内存就确定了,那么每个元素(整数)的内存大小都确定了(4 bytes)。
- list完全不同,它的每个元素其实是一个地址的引用,这个地址又指向了另一个元素,这些元素的在内存里不一定是连续的。所以list其实是只能塞进地址的“数组”,而且由于地址不用连续,每当我想加入新元素,我只用把这个元素的地址添加进list。
创建list
1、简单循环append
2、简单循环+=my_list = []
for i in range(50):
my_list.append(0)
3、列表推导式my_list = []
for i in range(50):
my_list += [0]
4、列表和整数乘法my_list = [0 for i in range(50)]
my_list = [0] * 50
输出list倒序的三种方法
对[::-1]的理解:即最后一位到第一位,步长为-1。 ```python aa = ‘123456789’ ab = [1,2,3,4,5,6,7,8,9] ac = (1,2,3,4,5,6,7,8,9)lists = [1,3,4,5,6,7,9,2]
# 切片
print lists[::-1]
# 函数reverse 对数组进行操作
lists.reverse()
print lists
# 函数reversed 返回一个迭代对象,需要list化
print list(reversed(lists))
str,list,tuple都可以切片,左闭右开
print(aa[1:-2]) print(ab[1:-2]) print(ac[1:-2])
aa[x:y:z] z表示步长,不能为0,z<0时,x为空时默认为-1,即最后一位,y为空时默认为(-len(aa)-1),所以[::-1]表示最后一位到第一位,即倒序
print(aa[-1:-10:-1]) # 987654321 print(aa[::-1]) #987654321
<a name="TBNpe"></a>
#### list合并
1、a+b
```python
a += b # a的值就变成了合并后的结果
2、a.extend(b)
和+=的结果一样
3、a.append(b)
将b看成list的一个元素和a合并成一个新的list。
4、a[0:0] = b
使用切片,合并后b处在a的前面。
在循环中删除list元素
因为删除元素后,整个列表的元素会往前移动,而i却是在最初已经确定了,是不断增大的,所以并不能得到想要的结果。
如果直接删,会报错,因为list还在循环。
1、遍历在新的列表操作,删除是在原来的列表操作。
a = [1,2,3,4,5,6,7,8]
print(id(a))
print(id(a[:]))
for i in a[:]:
if i>5:
pass
else:
a.remove(i)
print(a)
print('-------------------------')
print(id(a))
2、filter
a = [1,2,3,4,5,6,7,8]
b = filter(lambda x: x>5,a)
print(list(b))
# [6, 7, 8]
3、列表解析
a = [1,2,3,4,5,6,7,8]
b = [i for i in a if i >5]
print(b)
4、倒序删除
因为列表总是“往前移”,所以可以倒序遍历,即使后面的元素被修改了,还没有被遍历的元素和其坐标还是保持不变的。