pythonlist的索引
❶ python 数据处理(二十四)—— 索引和选择
如果你想获取 'A' 列的第 0 和第 2 个元素,你可以这样做:
这也可以用 .iloc 获取,通过使用位置索引来选择内容
可以使用 .get_indexer 获取多个索引:
警告 :
对于包含一个或多个缺失标签的列表,使用 .loc 或 [] 将不再重新索引,而是使用 .reindex
在以前的版本中,只要索引列表中存在至少一个有效标签,就可以使用 .loc[list-of-labels]
但是现在,只要索引列表中存在缺失的标签将引发 KeyError 。推荐的替代方法是使用 .reindex() 。
例如
索引列表的标签都存在
先前的版本
但是,现在
索引标签列表中包含不存在的标签,使用 reindex
另外,如果你只想选择有效的键,可以使用下面的方法,同时保留了数据的 dtype
对于 .reindex() ,如果有重复的索引将会引发异常
通常,您可以将所需的标签与当前轴做交集,然后重新索引
但是,如果你的索引结果包含重复标签,还是会引发异常
使用 sample() 方法可以从 Series 或 DataFrame 中随机选择行或列。
该方法默认会对行进行采样,并接受一个特定的行数、列数,或数据子集。
默认情况下, sample 每行最多返回一次,但也可以使用 replace 参数进行替换采样
默认情况下,每一行被选中的概率相等,但是如果你想让每一行有不同的概率,你可以为 sample 函数的 weights 参数设置抽样权值
这些权重可以是一个列表、一个 NumPy 数组或一个 Series ,但它们的长度必须与你要抽样的对象相同。
缺失的值将被视为权重为零,并且不允许使用 inf 值。如果权重之和不等于 1 ,则将所有权重除以权重之和,将其重新归一化。例如
当应用于 DataFrame 时,您可以通过简单地将列名作为字符串传递给 weights 作为采样权重(前提是您要采样的是行而不是列)。
sample 还允许用户使用 axis 参数对列进行抽样。
最后,我们还可以使用 random_state 参数为 sample 的随机数生成器设置一个种子,它将接受一个整数(作为种子)或一个 NumPy RandomState 对象
当为该轴设置一个不存在的键时, .loc/[] 操作可以执行放大
在 Series 的情况下,这实际上是一个追加操作
可以通过 .loc 在任一轴上放大 DataFrame
这就像 DataFrame 的 append 操作
由于用 [] 做索引必须处理很多情况(单标签访问、分片、布尔索引等),所以需要一些开销来搞清楚你的意图
如果你只想访问一个标量值,最快的方法是使用 at 和 iat 方法,这两个方法在所有的数据结构上都实现了
与 loc 类似, at 提供了基于标签的标量查找,而 iat 提供了基于整数的查找,与 iloc 类似
同时,你也可以根据这些索引进行设置值
如果索引标签不存在,会放大数据
另一种常见的操作是使用布尔向量来过滤数据。运算符包括:
|(or) 、 &(and) 、 ~ (not)
这些必须用括号来分组,因为默认情况下, Python 会将 df['A'] > 2 & df['B'] < 3 这样的表达式评估为 df['A'] > (2 & df['B']) < 3 ,而理想的执行顺序是 (df['A'] > 2) & (df['B'] < 3)
使用一个布尔向量来索引一个 Series ,其工作原理和 NumPy ndarray 一样。
您可以使用一个与 DataFrame 的索引长度相同的布尔向量从 DataFrame 中选择行
列表推导式和 Series 的 map 函数可用于产生更复杂的标准
我们可以使用布尔向量结合其他索引表达式,在多个轴上索引
iloc 支持两种布尔索引。如果索引器是一个布尔值 Series ,就会引发异常。
例如,在下面的例子中, df.iloc[s.values, 1] 是正确的。但是 df.iloc[s,1] 会引发 ValueError 。
❷ 用python创建一个列表,分别打印出列表的索引号和索引号对应的值
list1=['a','b','c']
fmt='index%dvalueis%s'
print','.join([fmt%(idx,val)
foridx,valinenumerate(list1)
])
#or
print','.join(map(
lambdax:fmt%x,
enumerate(list1)
))
❸ Python求解答过程
第11题
因为取字符串TempStr的从TempStr[3]到TempStr[-2]的字符,
这里的下标都是从0开始,Python的数学取值区间都是[3,-1)半开区间,
因此取值范围是[3,-2],运行结果是3.14159
❹ 为什么Python list的索引从0开始
如果你的l是如此定义的
List l=new ArrayList();
那么抛出此异常是非常正确的!因为java到源码如下:
public void add(int index, E element) {
if (index > size || index < 0)
throw new IndexOutOfBoundsException(
"Index: "+index+", Size: "+size);
//你的程序就符合index>size,所以就抛出IndexOutOfBoundsException
ensureCapacity(size+1); // Increments modCount!!
System.array(elementData, index, elementData, index + 1,
size - index);
elementData[index] = element;
size++;
}
❺ python如何创建一个具有索引的list
创建列表的列表不就行了。如:
lst=[]
for i in range(8):
====lst.append([for v in range(i+1)])
❻ python列表索引超出范围怎么解觉
python列表索引超出范围解决:j=5是j+1是6,列表索引号是从0开始的,第6位的索引是5。
看看是不是出现逻辑错误,常见的逻辑错误有:条件语句的边界值不正确;函数调用的错误;语句的先后顺序不对;运算符使用不正确;循环语句的初始值与终止值有误。因为del会实时地删掉list里面的内容,list就没有原来那么长了,再索引就会超出范围。
当表中有大量记录时
若要对表进行查询,第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。
❼ python如何将列表作为列表的索引
1.
a=['a','b','c','d','e','f','g','h','i','j','k','l','m','n']
b=[1,4,3,6,10]
c=type(a)(map(lambdai:a[i],b))#这里没有判断b的元素作为a的索引的时候值太大溢出的异常
printc
>>>
['b','e','d','g','k']
>>>
------------------------------
2.
>>>importnumpyasnp
>>>b=np.array([2,3,4,5,6])
>>>a=np.array([0,2,4])
>>>b[a]
array([2,4,6])
❽ python 要怎么判断list是否超出索引范围
题主你好,
可以利用len()函数进行判断. 详细逻辑如下:
假设我的列表为: a=['2022-06-24','2022-06-25','2022-06-26','2022-06-27','2022-06-28']
我先使用len()函数拿到列表a的长度,并将该长存到变量length中: length = len(a)
而列表索引的取值是以0为起始,以列表的长度减1结束,拿本例来说,列表a的索引取值范围就是a[0]到a[4]共5个元素.
因此题主在判断时,可以直接使用索引值和列表的最大索引进行比较,也就是和拿本例来说也就是和len(a)-1进行比较, 拿题主中提问中的例子来说就是用 7和len(a)-1进行比较,如果7小于等于len(a)-1则说明7这个索引没有超出列表的索引范围,反之.
-----
方法二: 利用异常捕获结构:
*.上面两种方法写的不是很好, 但希望可以给题主提供一些解题思路.
-----
扩展阅读: 网页链接
=====
希望可以帮到题主, 欢迎追问.
❾ python list找出一个元素的位置(重复元素怎么分别找出位置)
几种方式的回答:
1)
print('*'*15,'想找出里面有重复数据的索引值','*'*15)
listA = [100, 94, 88, 82, 76, 70, 64, 58, 52, 46, 40, 34,76]
print('列表中第1次出现的位置 = ',listA.index(76))
2)
a_list = ['a','b','c','c','d','c']
find = 'c'
print('重复元素出现的位置索引分别是 = ',[i for i,v in enumerate(a_list) if v==find])
-----------------------------------------------------
3)### 求某个元素重复的索引值,函数方式表述如下:
a_list = ['a','b','c','c','d','c']
def unique_index(L,f):
"""L表示列表, i表示索引值,v表示values,f表示要查找的元素 """
return [i for (i,v) in enumerate(L) if v==f]
print('索引值 = ',unique_index(a_list,'c'))
运行结果:
索引值 = [2, 3, 5]
4)还缺一种,列出多个元素重复的索引值,以后再补充
......
❿ python中的list和array的不同之处
在Python中,list和array都可以根据索引来取其中的元素,但是list可以用append或者+来新增元素或者添加数组,而array不行。具体区别如下:
1、作用不同
list是处理一组有序项目的数据结构;
array数组存储单一数据类型的多维数组;
2、内置数据类型
list是Python的内置数据类型;
array数组需要导入标准库才行,不属于内置类型;
3、数据类型是否相同
list中的数据类不必相同的,即每个元素可以是不同的数据类型;
array则是由Numpy封装,存放的元素都是相同的数据类型;
4、运算
列表list不可以进行数学四则运算;
数组array可以进行数学四则运算;