① 关于python里面的set,set之后的集合元素是如何让排列的
集合set中的元素是没有顺序的。
② Python中list和set的区别
List
字面意思就是一个集合,在Python中List中的元素用中括号[]来表示,可以这样定义一个List:
L = [12, 'China', 19.998]
可以看到并不要求元素的类型都是一样的。当然也可以定义一个空的List:
L = []
Python中的List是有序的,所以要访问List的话显然要通过序号来访问,就像是数组的下标一样,一样是下标从0开始:
>>> print L[0]
12
千万不要越界,否则会报错
>>> print L[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>
IndexError: list index out of range
List也可以倒序访问,通过“倒数第x个”这样的下标来表示序号,比如-1这个下标就表示倒数第一个元素:
>>> L = [12, 'China', 19.998]
>>> print L[-1]
19.998
-4的话显然就越界了
>>> print L[-4]
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <mole>
print L[-4]
IndexError: list index out of range
>>>
List通过内置的append()方法来添加到尾部,通过insert()方法添加到指定位置(下标从0开始):
>>> L = [12, 'China', 19.998]
>>> L.append('Jack')
>>> print L
[12, 'China', 19.998, 'Jack']
>>> L.insert(1, 3.14)
>>> print L
[12, 3.14, 'China', 19.998, 'Jack']
>>>
注意python中有几个方法与append类似,但是效果完全不一样,使用时需根据实际需求选用正确方法
1.append() 向列表尾部追加一个新元素,列表只占一个索引位,在原有列表上增加
2.extend() 向列表尾部追加一个列表,将列表中的每个元素都追加进来,在原有列表上增加
比如 list1=[1, 2, 3] .list2=[4, 5, 6]
list1.append(list2) 的结果为[1, 2, 3, [4, 5, 6]]
list1.extend(list2) 的结果为[1, 2, 3, 4, 5, 6]
3.+ 直接用+号看上去与用extend()一样的效果,但是实际上是生成了一个新的列表存这两个列表的和,只能用在两个列表相加上
4.+= 效果与extend()一样,向原列表追加一个新元素,在原有列表上增加
通过pop()删除最后尾部元素,也可以指定一参数删除指定位置:
>>> L.pop()
'Jack'
>>> print L
[12, 3.14, 'China', 19.998]
>>> L.pop(0)
12
>>> print L
[3.14, 'China', 19.998]
也可以通过下标进行复制替换
>>> L[1] = 'America'
>>> print L
[3.14, 'America', 19.998]
Set
set也是一组数,无序,内容又不能重复,通过调用set()方法创建:
>>> s = set(['A', 'B', 'C'])
对于访问一个set的意义就仅仅在于查看某个元素是否在这个集合里面,注意大小写敏感:
>>> print 'A' in s
True
>>> print 'D' in s
False
也通过for来遍历:
s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
for x in s:
print x[0],':',x[1]
>>>
Lisa : 85
Adam : 95
Bart : 59
通过add和remove来添加、删除元素(保持不重复),添加元素时,用set的add()方法
>>> s = set([1, 2, 3])
>>> s.add(4)
>>> print s
set([1, 2, 3, 4])
如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了:
>>> s = set([1, 2, 3])
>>> s.add(3)
>>> print s
set([1, 2, 3])
删除set中的元素时,用set的remove()方法:
>>> s = set([1, 2, 3, 4])
>>> s.remove(4)
>>> print s
set([1, 2, 3])
如果删除的元素不存在set中,remove()会报错:
>>> s = set([1, 2, 3])
>>> s.remove(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>
KeyError: 4
所以如果我们要判断一个元素是否在一些不同的条件内符合,用set是最好的选择,下面例子:
months = set(['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec',])
x1 = 'Feb'
x2 = 'Sun'
if x1 in months:
print 'x1: ok'
else:
print 'x1: error'
if x2 in months:
print 'x2: ok'
else:
print 'x2: error'
>>>
x1: ok
x2: error
另外,set的计算效率比list高
③ 关于python list index out of range
一般外部输入的数据都可能存在问题。所以通常在readlines后要做一次处理
for
line
in
file.readlines():
if
not
line.strip():continue
r
=
line.split('\t')
if
len(r)<3:continue
print
r
try:
records.setdefault(int(r[1]),
{})
records[int(r[1])].setdefault(int(r[0]),
{})
records[int(r[1])][int(r[0])]
=
float(r[2])
except
ValueErro:
continue
这样就避免了空行,字段数不足,以及类型转换出错。
④ python中如何在set中添加元素语句是什么
myset = set()
myset.add(1)
print(myset) # 输出 {1},即当前set中包含了一个元素,该元素为整数1
myset.add(2)
myset.add(100.1)
print(myset) # {1, 2, 100.1}
myset.add(1)
print(myset) # {1, 2, 100.1} 由于set中元素具有唯一性,所以重复元素将不会多次被加入set中
⑤ python dataframe multiindex 有几层
如何建立多重索引
import pandas as PD
df = PD.DataFrame()
df['a'] = list(range(10,30,2))
df['b'] = df['a'] // 10df.index.name = 'id'#drop : boolean, default True Delete columns to be used as the new indexdf = df.set_index([df['b'], df.index], drop=False)12345678
至此建立了一个带二重索引的dataframe

⑥ python怎么知道列表中最大的元素是第几个
l = [1,2,3]
maxnum = max(l)
print(l.index(maxnum))
index函数只会返回列表里第一个匹配的值,如果最大值在列表里有多个,则无法全部查询到
一个冒泡排序的思路,逐一对比,并记住当前最大值的下标,可以得到最大值的多个下标
l = [1,2,3,0,3]
indeiesDict = {}
maxnum = 0
for i in range(len(l)):
if i > 0 :
if l[i] >= l[i-1]:
maxnum = l[i]
index = i
else:
maxnum = l[i-1]
index = i-1
if indeiesDict.get(maxnum):
indeiesDict[maxnum].add(index)
else:
indeiesDict[maxnum] = set([index])
print(maxnum,indeiesDict[maxnum])
⑦ python 问题 reset_index(drop=True
reset_index用来重置索引,因为有时候对dataframe做处理后索引可能是乱的。
drop=True就是把原来的索引index列去掉,重置index。
drop=False就是保留原来的索引,添加重置的index。
两者的区别就是有没有把原来的index去掉。
此外还有一个参数:inplace
inplace=False(默认)表示原数组不变,对数据进行修改之后结果给新的数组。
inplace=True表示直接在原数组上对数据进行修改。

(7)pythonsetindex扩展阅读:
Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byte code。这种机制的基本思想跟Java,NET是一致的。然而,Python Virtual Machine与Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一种更高级的Virtual Machine。
⑧ python3'set'object does not support indexing怎么办
错误显示的是“元组”对象不支持索引;
但是列表支持索引;
a={"a","b","c"}#这是元组,不支持索引
a=["a","b","c"]#这是列表,支持索引,只要把花括号改成方括号就行
⑨ 关于python里面的set,set之后的集合元素是如何让排列的RT,看下面的例...
set是无序集合,python不保证其中元素的次序.打印结果取决于其内部存储结构和输出方式.
你打个长的就知道了
>>>
set('012345678910')
set(['1','0','3','2','5','4','7','6','9','8'])
说明它是按类似二维数组的方式保存的,先把重复的元素剔除,然后把元素按21436587的顺序存进二维数组
⑩ python 读取txt,将每行存为list
import pandas as pd
df=pd.read_table('d:/data.txt',sep=":",encoding='gbk',header=None)
df.columns=['a','b']
df['b']=df.b.map(lambda x:x[1:-1].replace("'",'').replace(' ',''))
df1=pd.concat([df.a,df.b.str.split(',',expand=True)],axis=1)
df1=df1.set_index('a')
df1=df1.stack().reset_index().drop('level_1',axis=1)
df1.to_excel('d:/out_data.xlsx',header=None,index=None)
