可能重复:
在python中移动列表的有效方法
我想将Python列表向右或向左旋转任意数量的项目(后者使用否定参数).
像这样的东西:
>>> l = [1,2,3,4]
>>> l.rotate(0)
[1,2,3,4]
>>> l.rotate(1)
[4,1,2,3]
>>> l.rotate(-1)
[2,3,4,1]
>>> l.rotate(4)
[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
怎么可能这样做?
我正试图拿一个看起来像这样的文件
AAA x 111
AAB x 111
AAA x 112
AAC x 123
...
Run Code Online (Sandbox Code Playgroud)
并使用字典,以便输出看起来像这样
{AAA: ['111', '112'], AAB: ['111'], AAC: [123], ...}
Run Code Online (Sandbox Code Playgroud)
这就是我尝试过的
file = open("filename.txt", "r")
readline = file.readline().rstrip()
while readline!= "":
list = []
list = readline.split(" ")
j = list.index("x")
k = list[0:j]
v = list[j + 1:]
d = {}
if k not in d == False:
d[k] = []
d[k].append(v)
readline = file.readline().rstrip()
Run Code Online (Sandbox Code Playgroud)
我一直在接受TypeError: unhashable type: 'list'.我知道字典中的键不能是列表,但我试图将我的值变成列表而不是键.我想知道我是否在某处犯了错误.
在Python中迭代列表时设置起始索引的最佳方法是什么.例如,我有一个星期几的列表 - 星期日,星期一,星期二,......星期六 - 但我想从星期一开始迭代列表.这样做的最佳做法是什么?
我有这个:
>>> a = [1, 2, 4]
>>> print a
[1, 2, 4]
>>> print a.insert(2, 3)
None
>>> print a
[1, 2, 3, 4]
>>> b = a.insert(3, 6)
>>> print b
None
>>> print a
[1, 2, 3, 6, 4]
Run Code Online (Sandbox Code Playgroud)
无论如何我可以获得更新的列表作为结果,而不是更新原始列表?
内置函数的slice用途是什么?如何使用它?
我知道Pythonic切片的直接方式 - l1[start:stop:step].我想知道我是否有切片对象,那我该如何使用呢?
在以下示例中:
foo = ['red', 'white', 'blue', 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
其中:foo[0:6:1]将打印foo中的所有元素.但是,foo[6:0:-1]将省略第1或第0个元素.
>>> foo[6:0:-1]
[3, 2, 1, 'blue', 'white']
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用foo.reverse()或foo [:: - 1]反向打印列表,但我试图理解为什么foo [6:0:-1]不打印整个列表?
我是Python面临问题的新手:如何在现有字符串中插入一些字段?
例如,假设我从任何包含以下内容的文件中读取了一行:
line = "Name Age Group Class Profession"
Run Code Online (Sandbox Code Playgroud)
现在我必须在Class字段之前的同一行中插入第3个Field(Group)3次.这意味着输出行应该是:
output_line = "Name Age Group Group Group Group Class Profession"
Run Code Online (Sandbox Code Playgroud)
我可以轻松地检索第三个字段(使用split方法),但请告诉我插入字符串的最简单方法?
如果我有一个列表说l = [1, 8, 8, 8, 1, 3, 3, 8]并且保证每个元素出现偶数次,我如何制作一个包含l现在出现n/2次数的所有元素的列表。所以既然1发生了2,它现在应该发生一次。由于8出现4次数,它现在应该出现两次。既然3发生了两次,就应该发生一次。
所以新列表将类似于 k=[1,8,8,3]
执行此操作的最快方法是什么?我list.count()为每个元素都做了,但速度很慢。
我有一堆看起来像这样的列表:
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)
我想交换元素如下:
final_l = [2, 1, 4, 3, 6, 5, 8, 7, 10, 9]
Run Code Online (Sandbox Code Playgroud)
列表的大小可能会有所不同,但它们总是包含偶数个元素.
我是Python的新手,我现在这样做:
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
final_l = []
for i in range(0, len(l)/2):
final_l.append(l[2*i+1])
final_l.append(l[2*i])
Run Code Online (Sandbox Code Playgroud)
我知道这不是真正的Pythonic,并且想要使用更高效的东西.也许列表理解?
X是一个2D数组.我想要一个Y与数组具有相同值的新变量X.而且,对Y的任何进一步操作都不应该影响X的值.
在我看来这么自然使用y = x.但它不适用于数组.如果我这样做然后改变y,x也会改变.我发现问题可以像这样解决:y = x[:]
但它不适用于2D阵列.例如:
x = [[1,2],[3,4]]
y = x[:]
y[0][0]= 1000
print x
Run Code Online (Sandbox Code Playgroud)
回报[ [1000, 2], [3, 4] ].它还如果我更换于事无补y=x[:]的y = x[:][:].
有人知道什么是正确而简单的方法吗?