Python

1.列表(list)

list1 = [i for i in range(10)]
list1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

特点:可遍历,可索引,可切片

列表的遍历:

方式1:

for i in range(len(list1)):
print(list1[i])

0
1
2
3
4
5
6
7
8
9

方式2:

list1 = [i+1 for i in range(10)]
for i,j in enumerate(list1):
print(i,j)
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10

*这里的enumerate()方法用于返回序列对应元素的下标及值

列表的索引:

print(list[0])
0

列表的切片:

list1[2:6]
[2, 3, 4, 5]

2.字典(dictionary)

dic1 = {'a':1,'b':2,'c':3}
dic1
{'a': 1, 'b': 2, 'c': 3}

特点:只可通过字典特有方法遍历,可通过'键-值‘的方式进行索引,键名不可重复,值可以重复

字典的遍历:

方式1:

for key in dic1.keys():
print(key)
a
b
c

方式2:

for value in dic1.values():
print(value)
1
2
3

方式3:

for key,value in dic1.items():
print(key + str(value))
a1
b2
c3

字典的索引:

dic1['a']
1

3.元组(tuple)

tp1 = (1,2,3,'a','b')
tp1
(1, 2, 3, 'a', 'b')

特点:一经创建,则不可修改,因此可以用元组来存放一些重要的常数,可索引,可首尾连接不同的元组

4.集合(set)

list = [1,2,2,3,4,5,5,6,6,7,8,9]
set(list)
{1, 2, 3, 4, 5, 6, 7, 8, 9}

特点:可通过集合来进行去重

R

1.向量(vector)

> v1 <- c(1,2,3,'a','b')
> v1
[1] "" "" "" "a" "b"

特点:可自由修改,切片,拼接,索引,遍历

向量的拼接技巧:

> v1 <- c(1,2,3,4)
> v2 <- c(5,6)
> c(v1,v2)
[1] 1 2 3 4 5 6

2.矩阵(matrix)

> v1 <- 1:10
> v1
[1] 1 2 3 4 5 6 7 8 9 10
> mat1 <- matrix(v1,nrow=2,ncol=5)
> mat1
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10

特点:matrix只能存在为规则的矩形结构,不能像vector一样自由的做不规则切片和增减元素

matrix()的byrow参数

> mat1 <- matrix(v1,nrow=2,ncol=5,byrow=TRUE)
> mat1
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10

byrow表示向量按行填充进而转为矩阵,默认byrow=FALSE

3.数组(array)

> v1 <- 1:50
> array1 <- array(v1,dim=c(5,5,2))
> array1
, , 1 [,1] [,2] [,3] [,4] [,5]
[1,] 1 6 11 16 21
[2,] 2 7 12 17 22
[3,] 3 8 13 18 23
[4,] 4 9 14 19 24
[5,] 5 10 15 20 25 , , 2 [,1] [,2] [,3] [,4] [,5]
[1,] 26 31 36 41 46
[2,] 27 32 37 42 47
[3,] 28 33 38 43 48
[4,] 29 34 39 44 49
[5,] 30 35 40 45 50

特点:与矩阵相似,但可以有大于2的维度

4.数据框(dataframe)

> v1 <- 1:4
> v2 <- 2:5
> v3 <- c('a','b','c','d')
> d1 <- data.frame(v1, v2, v3)
> d1
v1 v2 v3
1 1 2 a
2 2 3 b
3 3 4 c
4 4 5 d

特点:可以在不同字段下储存长度相等的不同数据类型的元素;不可按照下标索引值

数据框的列名索引:

> d1$v1
[1] 1 2 3 4

数据框的下标索引:

> d1[2,2]
[1] 3

PS:与Python pandas中的数据框进行对比

Pandas:

import pandas as pd

v1 = [i for i in range(10)]
v2 = [i+1 for i in range(10)]
d1 = pd.DataFrame({'v1':v1,
'v2':v2})
d1
v1 v2
0 0 1
1 1 2
2 2 3
3 3 4
4 4 5
5 5 6
6 6 7
7 7 8
8 8 9
9 9 10

pandas可以直接将矩阵(由列表嵌套成的矩阵,非numpy 中的matrix)转化为数据框

mat1 = [[1,2,3],[4,5,6]]
index = ['a','b']
colnames = ['x','y','z']
d1 = pd.DataFrame(data=mat1,index=index,columns=colnames)
d1
Out[11]:
x y z
a 1 2 3
b 4 5 6

pandas 数据框的索引

按字段名索引:

d1['v1']
Out[4]:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
Name: v1, dtype: int64

按下标索引:

d1.iloc[1]
Out[6]:
v1 1
v2 2
Name: 1, dtype: int64

*pandas中数据框的相关操作风格接近R

让我们回到R

5.列表(list)

> ele1 <- 1:20
> ele2 <- c('j','a','c','k')
> ele3 <- matrix(1:20, nrow=4,ncol=5)
> title <- 'List in R'
> list1 <- list(title=title, num=ele1, char=ele2, mat=ele3)
> list1
$title
[1] "List in R" $num
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 $char
[1] "j" "a" "c" "k" $mat
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20

*与Python中的list不同,R中的列表可以依次存入数据类型与结构相异的独立对象,并可以通过下标索引及'$'索引获取对象

最新文章

  1. 【bzoj4326】[NOIP2015]运输计划
  2. 简介Gulp, Grunt, Bower, 和 Npm 对Visual Studio的支持
  3. POJ1384Piggy-Bank[完全背包]
  4. python string与list互转
  5. CSS hack大全
  6. Selenium 进行web自动化测试
  7. vi的撤销命令
  8. perl 一个简单的面向对象的例子
  9. lepus3.7 天兔监控安装手册 CentOS6.5+mysql5.6
  10. 【Netty】Netty核心组件介绍
  11. ZooKeeper数据结构
  12. Struts(五)Action的访问
  13. Android开发学习之路--RxAndroid之lambda
  14. freemarker导出word文档
  15. [Swift]LeetCode691. 贴纸拼词 | Stickers to Spell Word
  16. C#导出 Excel 时, 生成 CheckBox 控件
  17. 支持开源,推动Orchard
  18. SQL中char、varchar、nvarchar、ntext的区别(转载)
  19. nginx 启动 + uwsgi + django
  20. mysql日期相关的函数

热门文章

  1. Java Hotspot client模式和server模式的区别
  2. 再学UML-深入浅出UML类图(二)
  3. Linux --Apache服务搭建
  4. 深度剖析hdfs原理
  5. js的作用域与作用域链
  6. CSS z-index的用法
  7. Qt socket制作一个简单的文件传输系统
  8. Excel-怎样实现行列转置
  9. hdu-1754 I Hate It---线段树模板题
  10. 2018.10.8 Hibernate中解决乱码问题---配置一个过滤器